summaryrefslogtreecommitdiff
path: root/NET/worlds/console/BBDroneDeltaPosCommand.java
blob: 09cfdf082780bb0db0069418495bbd520fdf5c02 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package NET.worlds.console;

import NET.worlds.scape.Drone;
import NET.worlds.scape.HoloPilot;
import NET.worlds.scape.Pilot;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

public class BBDroneDeltaPosCommand extends BlackBoxCommand {
   private byte dx;
   private byte dy;
   private byte dyaw;
   private String droneID;

   public BBDroneDeltaPosCommand() {
      this.commandType = 8;
   }

   public BBDroneDeltaPosCommand(String pdroneID, byte pdx, byte pdy, byte pdyaw) {
      this();
      this.droneID = pdroneID;
      this.dx = pdx;
      this.dy = pdy;
      this.dyaw = pdyaw;
   }

   @Override
   public boolean execute() {
      Drone id = null;
      if (this.droneID.equals("@Pilot")) {
         Pilot p = Pilot.getActive();
         if (p != null && p instanceof HoloPilot) {
            HoloPilot hp = (HoloPilot)p;
            Drone d = hp.getInternalDrone();
            if (d != null && d instanceof Drone) {
               id = d;
            }
         }
      } else {
         id = ArmyOfZombies.instance().get(this.droneID);
      }

      if (id != null) {
         id.shortLoc(this.dx, this.dy, this.dyaw);
         this.doCallback(true);
         return true;
      } else {
         this.doCallback(true);
         return true;
      }
   }

   @Override
   public void save(DataOutputStream dos) throws IOException {
      super.save(dos);
      dos.writeUTF(this.droneID);
      dos.writeByte(this.dx);
      dos.writeByte(this.dy);
      dos.writeByte(this.dyaw);
   }

   @Override
   public void load(DataInputStream dis) throws IOException {
      super.load(dis);
      this.droneID = dis.readUTF();
      this.dx = dis.readByte();
      this.dy = dis.readByte();
      this.dyaw = dis.readByte();
   }
}