📄 game.java
字号:
byte byte0 = -3;
byte1 = 3;
if (i1 == -3 || i1 == 3) {
byte0 = -2;
byte1 = 2;
}
l = byte0;
for (; l <= byte1; l++)
if ((l == 0) & (i1 == 0))
continue; /* Loop/switch isn't completed */
if (gw.lv.map[j + i1][i + l] == k
&& gw.lv.resources[j + i1][i + l] > 0)
return (j + i1 << 8) + (i + l);
continue; /* Loop/switch isn't completed */
}
return 0;
}
public int findStone(int i, int j) {
for (int l = -3; l <= 3; l++) {
int k;
byte byte1;
byte byte0 = -3;
byte1 = 3;
if (l == -3 || l == 3) {
byte0 = -2;
byte1 = 2;
}
k = byte0;
for (; k <= byte1; k++) {
if ((k == 0) & (l == 0))
continue; /* Loop/switch isn't completed */
byte byte2;
int i1;
int j1;
byte2 = gw.lv.map[j + l][i + k];
i1 = gw.lv.resources[j + l][i + k];
j1 = i1 >> 6 & 3;
i1 &= 0x3f;
if ((byte2 == 42 || byte2 == 43) && j1 == 0 && i1 > 0)
return (j + l << 8) + (i + k);
continue; /* Loop/switch isn't completed */
}
}
return 0;
}
public void gameOver() {
gameover = true;
gw.gs.newGame = true;
gw.gs.hassave = false;
gw.gs.localhiscores = false;
gw.gs.hiscoresFromMenu = false;
gw.gs.addscores = true;
if (byUragan) {
Strings _tmp = gw.st;
Strings _tmp1 = gw.st;
gw.gs.beginSplash(gw.st.get("Game Over"),
Strings.gameover[gw.st.locint] + " "
+ Strings.gameoveruragan[gw.st.locint]);
} else {
Strings _tmp2 = gw.st;
Strings _tmp3 = gw.st;
gw.gs.beginSplash(gw.st.get("Game Over"),
Strings.gameover[gw.st.locint] + " "
+ Strings.gameoverloc[gw.st.locint][gw.gs.country]);
}
}
public void gameWin() {
gameover = true;
gw.gs.newGame = true;
gw.gs.hassave = false;
gw.gs.hiscoresFromMenu = false;
if (mission < 11) {
Strings _tmp = gw.st;
gw.gs.beginSplash(gw.st.get("Congratulations!"),
Strings.win[gw.st.locint]);
} else {
Strings _tmp1 = gw.st;
gw.gs.beginSplash(gw.st.get("Congratulations!"),
Strings.winchapter[gw.st.locint]);
gw.gs.country++;
if (gw.gs.country > 2)
gw.gs.country = 0;
}
}
public void hassave() {
try {
rStore = RecordStore.openRecordStore("globalw", false);
gw.gs.hassave = true;
rStore.closeRecordStore();
} catch (Exception exception) {
gw.gs.hassave = false;
}
}
public void initOptions() {
chapter = 1;
mission = 0;
gw.gs.days = 1;
gw.gt.daycnt = 0;
gw.gs.cursori = gw.gs.castlei;
gw.gs.cursorj = gw.gs.castlej;
gw.gs.uragan = false;
gw.gs.uraganvisible = false;
}
public boolean movePeople(int i) {
boolean flag = false;
short word0 = people[i][0];
short word1 = people[i][1];
if (people[i][7] != 4) {
if (word0 % 22 == 0 && word1 % 22 == 0)
flag = swapPeople(i);
switch (people[i][7]) {
case 0: // '\0'
people[i][1] += 2;
break;
case 1: // '\001'
people[i][0] += 2;
break;
case 2: // '\002'
people[i][1] -= 2;
break;
case 3: // '\003'
people[i][0] -= 2;
break;
}
}
people[i][10] = (short) (people[i][0] / 22);
people[i][11] = (short) (people[i][1] / 22);
return flag;
}
public void newBuild() {
if (buildsNum < 120) {
objects[buildsNum][0] = (byte) gw.gs.cursori;
objects[buildsNum][1] = (byte) gw.gs.cursorj;
objects[buildsNum][2] = (byte) gw.gs.buildNum;
objects[buildsNum][3] = 0;
objects[buildsNum][4] = 0;
gw.lv.flags[gw.gs.cursorj][gw.gs.cursori] |= 4;
objects[buildsNum][5] = 0;
objects[buildsNum][6] = 0;
objects[buildsNum][7] = 0;
buildsNum++;
gw.gm.scores += 10;
}
}
public void newPeople(int i, int j, int k, int l) {
if (peopleNum < 240) {
people[peopleNum][0] = (short) (gw.gs.castlei * 22);
people[peopleNum][1] = (short) (gw.gs.castlej * 22);
people[peopleNum][2] = 0;
people[peopleNum][5] = (short) j;
people[peopleNum][6] = (short) k;
people[peopleNum][8] = (short) i;
if (i == 80)
people[peopleNum][9] = 0;
else
people[peopleNum][9] = 2;
people[peopleNum][3] = (short) l;
people[peopleNum][4] = 0;
people[peopleNum][7] = 0;
people[peopleNum][10] = 0;
people[peopleNum][11] = 0;
peopleNum++;
stock[15] = (short) peopleNum;
}
}
public void peopletoxy(int i, int j, int k) {
people[i][5] = (short) (j * 22);
people[i][6] = (short) (k * 22);
}
public void restore() {
try {
rStore = RecordStore.openRecordStore("globalw", true);
if (rStore.getNumRecords() > 0) {
RecordEnumeration recordenumeration = rStore.enumerateRecords(
null, null, true);
ByteArrayInputStream bytearrayinputstream = new ByteArrayInputStream(
recordenumeration.nextRecord());
DataInputStream datainputstream = new DataInputStream(
bytearrayinputstream);
gw.gs.country = datainputstream.readByte();
chapter = datainputstream.readInt();
mission = datainputstream.readInt();
for (int i = 0; i < 64; i++) {
for (int j = 0; j < 64; j++) {
gw.lv.map[i][j] = datainputstream.readByte();
gw.lv.flags[i][j] = datainputstream.readByte();
gw.lv.resources[i][j] = datainputstream.readByte();
}
}
for (int k = 0; k < 64; k++) {
gw.lv.barhany[k] = datainputstream.readByte();
gw.lv.ljod[k] = datainputstream.readByte();
gw.lv.bereg[k] = datainputstream.readByte();
}
buildsNum = datainputstream.readShort();
for (int l = 0; l < buildsNum; l++) {
for (int i1 = 0; i1 < 8; i1++)
objects[l][i1] = datainputstream.readByte();
}
peopleNum = datainputstream.readShort();
for (int j1 = 0; j1 < peopleNum; j1++) {
for (int k1 = 0; k1 < 12; k1++)
people[j1][k1] = datainputstream.readShort();
}
for (int l1 = 0; l1 < stock.length; l1++)
stock[l1] = datainputstream.readShort();
gw.gs.days = datainputstream.readInt();
gw.gt.daycnt = datainputstream.readByte();
gw.gs.cursori = datainputstream.readByte();
gw.gs.cursorj = datainputstream.readByte();
gw.gs.uragan = datainputstream.readBoolean();
gw.gs.uraganvisible = datainputstream.readBoolean();
gw.gs.uraganx = datainputstream.readInt();
gw.gs.uragany = datainputstream.readInt();
gw.gs.uraganvx = datainputstream.readInt();
gw.gs.uraganvy = datainputstream.readInt();
gw.gm.scores = datainputstream.readInt();
gw.gs.earthQuake = datainputstream.readBoolean();
gw.gs.earthQuakePeriod = datainputstream.readInt();
gw.gs.deltaScrX = 4;
gw.gs.deltaScrY = 4;
}
rStore.closeRecordStore();
} catch (Exception exception) {
}
}
public void restoreOpt() {
try {
rStore = RecordStore.openRecordStore("globalwopt", false);
if (rStore.getNumRecords() > 0) {
RecordEnumeration recordenumeration = rStore.enumerateRecords(
null, null, true);
ByteArrayInputStream bytearrayinputstream = new ByteArrayInputStream(
recordenumeration.nextRecord());
DataInputStream datainputstream = new DataInputStream(
bytearrayinputstream);
userid = datainputstream.readInt();
gw.st.locint = datainputstream.readInt();
if (gw.st.locint == 1)
gw.st.locale = "ru";
else
gw.st.locale = "en";
gw.gs.sound = datainputstream.readBoolean();
gw.gs.vibration = datainputstream.readBoolean();
}
rStore.closeRecordStore();
} catch (Exception exception) {
userid = gw.gs.rnd.nextInt();
gw.gs.sound = true;
gw.gs.vibration = true;
}
}
public void save() {
ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
DataOutputStream dataoutputstream = new DataOutputStream(
bytearrayoutputstream);
try {
dataoutputstream.writeByte(gw.gs.country);
dataoutputstream.writeInt(chapter);
dataoutputstream.writeInt(mission);
for (int i = 0; i < 64; i++) {
for (int j = 0; j < 64; j++) {
dataoutputstream.writeByte(gw.lv.map[i][j]);
dataoutputstream.writeByte(gw.lv.flags[i][j]);
dataoutputstream.writeByte(gw.lv.resources[i][j]);
}
}
for (int k = 0; k < 64; k++) {
dataoutputstream.writeByte(gw.lv.barhany[k]);
dataoutputstream.writeByte(gw.lv.ljod[k]);
dataoutputstream.writeByte(gw.lv.bereg[k]);
}
dataoutputstream.writeShort(buildsNum);
for (int l = 0; l < buildsNum; l++) {
for (int i1 = 0; i1 < 8; i1++)
dataoutputstream.writeByte(objects[l][i1]);
}
dataoutputstream.writeShort(peopleNum);
for (int j1 = 0; j1 < peopleNum; j1++) {
for (int k1 = 0; k1 < 12; k1++)
dataoutputstream.writeShort(people[j1][k1]);
}
for (int l1 = 0; l1 < stock.length; l1++)
dataoutputstream.writeShort(stock[l1]);
dataoutputstream.writeInt(gw.gs.days);
dataoutputstream.writeByte(gw.gt.daycnt);
dataoutputstream.writeByte(gw.gs.cursori);
dataoutputstream.writeByte(gw.gs.cursorj);
dataoutputstream.writeBoolean(gw.gs.uragan);
dataoutputstream.writeBoolean(gw.gs.uraganvisible);
dataoutputstream.writeInt(gw.gs.uraganx);
dataoutputstream.writeInt(gw.gs.uragany);
dataoutputstream.writeInt(gw.gs.uraganvx);
dataoutputstream.writeInt(gw.gs.uraganvy);
dataoutputstream.writeInt(gw.gm.scores);
dataoutputstream.writeBoolean(gw.gs.earthQuake);
dataoutputstream.writeInt(gw.gs.earthQuakePeriod);
byte abyte0[] = bytearrayoutputstream.toByteArray();
rStore = RecordStore.openRecordStore("globalw", true);
if (rStore.getNumRecords() > 0) {
rStore.closeRecordStore();
RecordStore.deleteRecordStore("globalw");
rStore = RecordStore.openRecordStore("globalw", true);
}
rStore.addRecord(abyte0, 0, abyte0.length);
rStore.closeRecordStore();
} catch (Exception exception) {
}
}
public void saveOpt() {
ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
DataOutputStream dataoutputstream = new DataOutputStream(
bytearrayoutputstream);
try {
int i = 0;
if (gw.st.locale == "ru")
i = 1;
dataoutputstream.writeInt(userid);
dataoutputstream.writeInt(i);
dataoutputstream.writeBoolean(gw.gs.sound);
dataoutputstream.writeBoolean(gw.gs.vibration);
byte abyte0[] = bytearrayoutputstream.toByteArray();
rStore = RecordStore.openRecordStore("globalwopt", true);
if (rStore.getNumRecords() > 0) {
rStore.closeRecordStore();
RecordStore.deleteRecordStore("globalwopt");
rStore = RecordStore.openRecordStore("globalwopt", true);
}
rStore.addRecord(abyte0, 0, abyte0.length);
rStore.closeRecordStore();
} catch (Exception exception) {
}
}
public void start() {
for (int i = 0; i < stock.length; i++)
stock[i] = 0;
buildsNum = 0;
calculateBuilds();
peopleNum = 0;
stock[2] = 10;
stock[3] = 10;
chapter = 1;
mission = 0;
scores = 0;
gameover = false;
}
public boolean swapPeople(int i) {
int j = people[i][5] - people[i][0];
int k = people[i][6] - people[i][1];
int l = j;
int i1 = k;
boolean flag = true;
boolean flag1 = true;
boolean flag2 = false;
if (j < 0) {
j = -j;
flag = false;
}
if (k < 0) {
k = -k;
flag1 = false;
}
if (j < 22 && k < 22) {
byte byte0 = 4;
gw.lv.flags[people[i][11]][people[i][10]] |= 4;
people[i][7] = byte0;
return true;
}
byte byte1;
if (people[i][8] != 0 || people[i][9] != 4 && people[i][9] != 6) {
if ((gw.gs.rnd.nextInt() & 0xffff) * (j + k) >> 16 < k)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -