This problem can be solved mathematically much better than it can with a list, or collection.

What you have is 9 states, and a timer that counts down. The timer can be expressed as a proportion of 1. Because the states are all equally spaced on 1/9 intervals, you can just do math....

So, if the time is \$x\$ and the total time is \$y\$, then the current portion is \$\frac{x}{y}\$ If you multiply this value by 9, you get something on the scale of 0 to 9 inclusive. you really want:

<strike>

    public int tileID(int currentTime, int totalTime, int tileCount) {
        // we want the shift to happen at less than half-the-time (in the middle of the period).
        double shift = (1.0 / tileCount) / 2;
        double progress = (double)currentTime / (double)(totalTime);
        int tile = (int)(progress * tileCount + shift);
        return tile;
    }

</strike>

`shift` is needed to make the `(int)` truncation work. Your comment has made me think, and, in reality, it is not the most readable/understandable code. In fact it is broken, and shift should just be 0.5 always... Let me re-do it in the form of a `round()` instead of a truncation:

    public int tileID(int currentTime, int totalTime, int tileCount) {
        double progress = (double)currentTime / (double)totalTime;
        int tile = (int)Math.round(progress * tileCount);
        return tile;
    }


Then, you can use this with:

    TargetScope tile = TargetScope.values[tileId(this.time,
                  TargetManager.TARGET_SEARCH_WAIT, TargetScope.values[].length)];