package clientdata.visitors.terrain;
public class SWGRandom {
int seed;
int unknown;
int table[];
public SWGRandom() {
table = new int[322];
seed = 0;
unknown = 0;
}
public void setSeed(int seed) {
this.seed = -seed;
}
int next() {
int v2, v8;
if (seed <= 0 || unknown == 0) {
v2 = -seed;
if (v2 >= 1)
seed = v2;
else
seed = 1;
for (int i = 329; i >= 0; --i) {
int valueTo1 = seed;
int value2 = 16807 * valueTo1;
int tempDiv = valueTo1 / 0x1F31D;
int value3 = (0x7FFFFFFF * tempDiv);
seed = value2 - value3;
if (seed < 0)
seed = seed + 0x7FFFFFFF;
if (i < 322) {
table[i] = seed;
}
}
unknown = table[0];
}
int valueTo1 = seed;
int value2 = 16807 * valueTo1;
int tempDiv = valueTo1 / 0x1F31D;
int value3 = (0x7FFFFFFF * tempDiv);
seed = value2 - value3;
if (seed < 0)
seed = seed + 0x7FFFFFFF;
v8 = (int) ((double) unknown / 6669205.0); // random index?
unknown = table[v8];
table[v8] = seed;
return unknown;
}
}