Mercurial > hg > Database > Alice
comparison src/main/java/alice/test/topology/aquarium/AutoIncrement.java @ 345:8f71c3e6f11d
Change directory structure Maven standard
author | sugi |
---|---|
date | Wed, 16 Apr 2014 18:26:07 +0900 |
parents | |
children | aefbe41fcf12 |
comparison
equal
deleted
inserted
replaced
344:9f97ec18f8c5 | 345:8f71c3e6f11d |
---|---|
1 package alice.test.topology.aquarium; | |
2 | |
3 import alice.codesegment.CodeSegment; | |
4 import alice.datasegment.CommandType; | |
5 import alice.datasegment.Receiver; | |
6 | |
7 public class AutoIncrement extends CodeSegment { | |
8 | |
9 private Receiver position = ids.create(CommandType.PEEK); | |
10 private Receiver number = ids.create(CommandType.PEEK); | |
11 private static final float MIN = -1.3f; | |
12 | |
13 public AutoIncrement(String key, int index) { | |
14 this.number.setKey("maxsize"); | |
15 this.position.setKey(key, index); | |
16 } | |
17 | |
18 @Override | |
19 public void run() { | |
20 float max = this.number.asInteger() * 2 - 1 + 0.3f; | |
21 FishPoint fp = this.position.asClass(FishPoint.class); | |
22 if (fp.getX() + 0.01 > max) { | |
23 fp.setXYZ(MIN, fp.getY(), fp.getZ()); | |
24 } else if (fp.getX() + 0.01 < MIN) { | |
25 fp.setXYZ(max, fp.getY(), fp.getZ()); | |
26 } | |
27 else { | |
28 fp.setXYZ(fp.getX() + 0.01f, fp.getY(), fp.getZ()); | |
29 } | |
30 | |
31 ods.update(position.key, fp); | |
32 synchronized (this) { | |
33 try { | |
34 // TODO | |
35 // Waiting should be done in Alice kernel | |
36 // ids.create(CommandType.WAIT); | |
37 | |
38 wait(20); | |
39 } catch (InterruptedException e) { | |
40 e.printStackTrace(); | |
41 } | |
42 } | |
43 | |
44 new AutoIncrement(this.position.key, this.position.index); | |
45 } | |
46 | |
47 } |