void read() throws GameActionException {
   switch (type) {
     case MAP_LOW:
       if (Common.xMin == Common.MAP_NONE && x != Signals.SIG_NONE) {
         int newx = x + Common.hometown.x / Common.MAP_MOD * Common.MAP_MOD;
         if (newx > Common.hometown.x) newx -= Common.MAP_MOD;
         Common.xMin = newx;
         Common.xMax = Common.twiceCenterX - Common.xMin;
         if (Common.canMessageSignal) Common.sendBoundariesLow = true;
       }
       if (Common.yMin == Common.MAP_NONE && y != Signals.SIG_NONE) {
         int newy = y + Common.hometown.y / Common.MAP_MOD * Common.MAP_MOD;
         if (newy > Common.hometown.y) newy -= Common.MAP_MOD;
         Common.yMin = newy;
         if (Common.canMessageSignal) Common.sendBoundariesLow = true;
       }
       break;
     case MAP_HIGH:
       if (Common.xMax == Common.MAP_NONE && x != Signals.SIG_NONE) {
         int newx = x + Common.hometown.x / Common.MAP_MOD * Common.MAP_MOD;
         if (newx < Common.hometown.x) newx += Common.MAP_MOD;
         Common.xMax = newx;
         Common.xMin = Common.twiceCenterX - Common.xMax;
         if (Common.canMessageSignal) Common.sendBoundariesHigh = true;
       }
       if (Common.yMax == Common.MAP_NONE && y != Signals.SIG_NONE) {
         int newy = y + Common.hometown.y / Common.MAP_MOD * Common.MAP_MOD;
         if (newy < Common.hometown.y) newy += Common.MAP_MOD;
         Common.yMax = newy;
         if (Common.canMessageSignal) Common.sendBoundariesHigh = true;
       }
       break;
     case ENEMY:
       Signals.enemies[Signals.enemiesSize++] = Signals.expandPoint(x, y);
       break;
     case TARGET:
       Signals.targets[Signals.targetsSize++] = Signals.expandPoint(x, y);
       break;
   }
 }