Cleanup part 1 (#213)

* Clean up part 1

- Removed lots of dead code
- Removed unncessary files not in use
- Cleaned up small bits of code
- Removed a few warnings
- Server.java ---> GameEngine.java
- Constants.java ---> GameConstants.java

* Cape Dye

Rewrote cape dying

* Packaging

- redone ----> com.rebotted

* PacketSender/clean up

- ActionSender ---> PacketSender
- Moved many more packets to packetsender
- Cleaned up more dead code

* Merge Client/Player

- Merged Client.java with Player.java (both were doing same thing so redundant to have both)
- Removed some more dead code
- Tidy a few small things up

* Quests/more clean up

- Removed more dead code
- Made quests static in order to clean them up a bit

* More cleanup

- Removed some more of the dead quest code
- Correcting naming of some of the shop variables
This commit is contained in:
Mr Extremez
2019-11-25 11:08:56 -06:00
committed by Daniel Ginovker
parent 3d1ae1b288
commit d876a923b9
379 changed files with 80684 additions and 83170 deletions
@@ -0,0 +1,56 @@
package com.rebotted.game.globalworldobjects;
import com.rebotted.game.objects.Object;
import com.rebotted.game.objects.ObjectDefaults;
import com.rebotted.game.players.Player;
import com.rebotted.world.clip.ObjectDef;
import com.rebotted.world.clip.Region;
public class ClimbOther {
public enum ClimbData {
VARROCK_MANHOLE(881, 882),
LUMBRIDGE_TRAPDOOR(14879, 10698),
VARROCK_TRAPDOOR(1568, 10698);
private int closedId, openId;
private ClimbData(int closedId, int openId) {
this.closedId = closedId;
this.openId = openId;
}
public int getClosed() {
return closedId;
}
public int getOpen() {
return openId;
}
}
public static void handleOpenOther(Player player, int objectType) {
for (ClimbData t: ClimbData.values()) {
if (objectType == t.getClosed()) {
new Object(t.getOpen(), player.objectX, player.objectY, player.heightLevel, ObjectDefaults.getObjectFace(player, t.getClosed()), 10, t.getClosed(), 100);
Region.addObject(t.getOpen(), player.objectX, player.objectY, player.heightLevel, 10, ObjectDefaults.getObjectFace(player, t.getClosed()), false);
}
}
}
public static void useOther(Player player, int objectType) {
final String objectName = ObjectDef.getObjectDef(objectType).name;
if (System.currentTimeMillis() - player.climbDelay < 1800) {
return;
}
player.stopMovement();
player.startAnimation(827);
player.getPacketSender().closeAllWindows();
player.teleportToX = player.absX;
player.teleportToY = player.absY + 6400;
player.getPacketSender().sendMessage("You climb down the " + objectName.toLowerCase() + ".");
player.climbDelay = System.currentTimeMillis();
}
}
@@ -0,0 +1,276 @@
package com.rebotted.game.globalworldobjects;
import java.util.ArrayList;
import java.util.List;
import java.io.*;
import java.util.Scanner;
import com.rebotted.GameEngine;
import com.rebotted.game.objects.Objects;
import com.rebotted.game.players.Player;
public class Doors {
private static Doors singleton = null;
private List<Doors> doors = new ArrayList<Doors>();
private File doorFile;
public static Doors getSingleton() {
if (singleton == null) {
singleton = new Doors(System.getProperty("user.dir") + "/data/doors.txt");
}
return singleton;
}
private Doors(String file){
doorFile = new File(file);
}
private Doors(int door, int x, int y, int z, int face, int type, int open) {
this.doorId = door;
this.originalId = door;
this.doorX = x;
this.doorY = y;
this.originalX = x;
this.originalY = y;
this.doorZ = z;
this.originalFace = face;
this.currentFace = face;
this.type = type;
this.open = open;
}
private Doors getDoor(int id, int x, int y, int z) {
for (Doors d : doors) {
if (d.doorId == id) {
if (d.doorX == x && d.doorY == y && d.doorZ == z) {
return d;
}
}
}
return null;
}
public boolean handleDoor(int id, int x, int y, int z, Player player) {
Doors d = getDoor(id, x, y, z);
if (d == null) {
if (DoubleDoors.getSingleton().handleDoor(id, x, y, z)) {
return true;
}
return false;
}
//todo: improvment: if player manage to get to door then open the door.
if(player.distanceToPoint(x, y) > 1) return false;
int xAdjustment = 0, yAdjustment = 0;
if (d.type == 0) {
if (d.open == 0) {
if (d.originalFace == 0 && d.currentFace == 0) {
xAdjustment = -1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
yAdjustment = 1;
} else if (d.originalFace == 2 && d.currentFace == 2) {
xAdjustment = 1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
yAdjustment = -1;
}
} else if (d.open == 1) {
if (d.originalFace == 0 && d.currentFace == 0) {
yAdjustment = 1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
xAdjustment = 1;
} else if (d.originalFace == 2 && d.currentFace == 2) {
yAdjustment = -1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
xAdjustment = -1;
}
}
} else if (d.type == 9) {
if (d.open == 0) {
if (d.originalFace == 0 && d.currentFace == 0) {
xAdjustment = 1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
xAdjustment = 1;
} else if (d.originalFace == 2 && d.currentFace == 2) {
xAdjustment = -1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
xAdjustment = -1;
}
} else if (d.open == 1) {
if (d.originalFace == 0 && d.currentFace == 0) {
xAdjustment = 1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
xAdjustment = 1;
} else if (d.originalFace == 2 && d.currentFace == 2) {
xAdjustment = -1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
xAdjustment = -1;
}
}
}
if (xAdjustment != 0 || yAdjustment != 0) {
Objects o = new Objects(-1, d.doorX, d.doorY, d.doorZ, 0, d.type, 0);
GameEngine.objectHandler.placeObject(o);
}
if (d.doorX == d.originalX && d.doorY == d.originalY) {
d.doorX += xAdjustment;
d.doorY += yAdjustment;
} else {
Objects o = new Objects(-1, d.doorX, d.doorY, d.doorZ, 0, d.type, 0);
GameEngine.objectHandler.placeObject(o);
d.doorX = d.originalX;
d.doorY = d.originalY;
}
if (d.doorId == d.originalId) {
if (d.open == 0) {
d.doorId += 1;
} else if (d.open == 1) {
d.doorId -= 1;
}
} else if (d.doorId != d.originalId) {
if (d.open == 0) {
d.doorId -= 1;
} else if (d.open == 1) {
d.doorId += 1;
}
}
GameEngine.objectHandler.placeObject(new Objects(d.doorId, d.doorX, d.doorY, d.doorZ, getNextFace(d), d.type, 0));
return true;
}
private int getNextFace(Doors d) {
int f = d.originalFace;
if (d.type == 0) {
if (d.open == 0) {
if (d.originalFace == 0 && d.currentFace == 0) {
f = 1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
f = 2;
} else if (d.originalFace == 2 && d.currentFace == 2) {
f = 3;
} else if (d.originalFace == 3 && d.currentFace == 3) {
f = 0;
} else if (d.originalFace != d.currentFace){
f = d.originalFace;
}
} else if (d.open == 1) {
if (d.originalFace == 0 && d.currentFace == 0) {
f = 3;
} else if (d.originalFace == 1 && d.currentFace == 1) {
f = 0;
} else if (d.originalFace == 2 && d.currentFace == 2) {
f = 1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
f = 2;
} else if (d.originalFace != d.currentFace){
f = d.originalFace;
}
}
} else if (d.type == 9) {
if (d.open == 0) {
if (d.originalFace == 0 && d.currentFace == 0) {
f = 3;
} else if (d.originalFace == 1 && d.currentFace == 1) {
f = 2;
} else if (d.originalFace == 2 && d.currentFace == 2) {
f = 1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
f = 0;
} else if (d.originalFace != d.currentFace){
f = d.originalFace;
}
} else if (d.open == 1) {
if (d.originalFace == 0 && d.currentFace == 0) {
f = 3;
} else if (d.originalFace == 1 && d.currentFace == 1) {
f = 0;
} else if (d.originalFace == 2 && d.currentFace == 2) {
f = 1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
f = 2;
} else if (d.originalFace != d.currentFace){
f = d.originalFace;
}
}
}
d.currentFace = f;
return f;
}
public void load() {
//long start = System.currentTimeMillis();
try {
singleton.processLineByLine();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//System.out.println("Loaded "+ doors.size() +" doors in "+ (System.currentTimeMillis() - start) +"ms.");
}
private final void processLineByLine() throws FileNotFoundException {
Scanner scanner = new Scanner(new FileReader(doorFile));
try {
while(scanner.hasNextLine()) {
processLine(scanner.nextLine());
}
} finally {
scanner.close();
}
}
protected void processLine(String line){
Scanner scanner = new Scanner(line);
scanner.useDelimiter(" ");
try {
while(scanner.hasNextLine()) {
int id = Integer.parseInt(scanner.next());
int x = Integer.parseInt(scanner.next());
int y = Integer.parseInt(scanner.next());
int f = Integer.parseInt(scanner.next());
int z = Integer.parseInt(scanner.next());
int t = Integer.parseInt(scanner.next());
doors.add(new Doors(id,x,y,z,f,t,alreadyOpen(id)?1:0));
}
} finally {
scanner.close();
}
}
private boolean alreadyOpen(int id) {
for (int i = 0; i < openDoors.length; i++) {
if (openDoors[i] == id) {
return true;
}
}
return false;
}
private int doorId;
private int originalId;
private int doorX;
private int doorY;
private int originalX;
private int originalY;
private int doorZ;
private int originalFace;
private int currentFace;
private int type;
private int open;
private static int[] openDoors = {
1504, 1514, 1517, 1520, 1531,
1534, 2033, 2035, 2037, 2998,
3271, 4468, 4697, 6101,6103,
6105, 6107, 6109, 6111, 6113,
6115, 6976, 6978, 8696, 8819,
10261, 10263,10265,11708,11710,
11712,11715,11994,12445, 13002,
};
}
@@ -0,0 +1,388 @@
package com.rebotted.game.globalworldobjects;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.rebotted.GameEngine;
import com.rebotted.game.objects.Objects;
/**
*
* @author Killamess
*
*/
public class DoubleDoors {
private static DoubleDoors singleton = null;
private List<DoubleDoors> doors = new ArrayList<DoubleDoors>();
private File doorFile;
public static DoubleDoors getSingleton() {
if (singleton == null) {
singleton = new DoubleDoors("./data/doubledoors.txt");
}
return singleton;
}
private DoubleDoors(String file){
doorFile = new File(file);
}
private DoubleDoors getDoor(int id, int x, int y, int z) {
for (DoubleDoors d : doors) {
if (d.doorId == id) {
if (d.x == x && d.y == y && d.z == z) {
return d;
}
}
}
return null;
}
public boolean handleDoor(int id, int x, int y, int z) {
DoubleDoors doorClicked = getDoor(id, x, y, z);
if (doorClicked == null) {
GameEngine.objectHandler.placeObject(new Objects(-1, x, y, z, 0, 0, 0));
return true;
}
if (doorClicked.doorId > 12000) {
return true; //nearly all of these are not opened
}
if (doorClicked.open == 0) {
if (doorClicked.originalFace == 0) {
DoubleDoors lowerDoor = getDoor(id - 3, x, y -1, z);
DoubleDoors upperDoor = getDoor(id + 3, x, y +1, z);
if (lowerDoor != null) {
changeLeftDoor(lowerDoor);
changeRightDoor(doorClicked);
} else if (upperDoor != null) {
changeLeftDoor(doorClicked);
changeRightDoor(upperDoor);
}
} else if (doorClicked.originalFace == 1) {
DoubleDoors westDoor = getDoor(id - 3, x -1, y, z);
DoubleDoors eastDoor = getDoor(id + 3, x +1, y, z);
if (westDoor != null) {
changeLeftDoor(westDoor);
changeRightDoor(doorClicked);
} else if (eastDoor != null) {
changeLeftDoor(doorClicked);
changeRightDoor(eastDoor);
}
} else if (doorClicked.originalFace == 2) {
DoubleDoors lowerDoor = getDoor(id - 3, x, y +1, z);
DoubleDoors upperDoor = getDoor(id + 3, x, y -1, z);
if (lowerDoor != null) {
changeLeftDoor(lowerDoor);
changeRightDoor(doorClicked);
} else if (upperDoor != null) {
changeLeftDoor(doorClicked);
changeRightDoor(upperDoor);
}
} else if (doorClicked.originalFace == 3) {
DoubleDoors westDoor = getDoor(id + 3, x -1, y, z);
DoubleDoors eastDoor = getDoor(id - 3, x +1, y, z);
if (westDoor != null) {
changeLeftDoor(westDoor);
changeRightDoor(doorClicked);
} else if (eastDoor != null) {
changeLeftDoor(doorClicked);
changeRightDoor(eastDoor);
}
}
} else if (doorClicked.open == 1) {
if (doorClicked.originalFace == 0) {
DoubleDoors westDoor = getDoor(id - 3, x -1, y, z);
DoubleDoors upperDoor = getDoor(id + 3, x +1, y, z);
if (westDoor != null) {
changeLeftDoor(westDoor);
changeRightDoor(doorClicked);
} else if (upperDoor != null) {
changeLeftDoor(doorClicked);
changeRightDoor(upperDoor);
}
} else if (doorClicked.originalFace == 1) {
DoubleDoors northDoor = getDoor(id - 3, x, y + 1, z);
DoubleDoors southDoor = getDoor(id + 3, x, y -1, z);
if (northDoor != null) {
changeLeftDoor(northDoor);
changeRightDoor(doorClicked);
} else if (southDoor != null) {
changeLeftDoor(doorClicked);
changeRightDoor(southDoor);
}
} else if (doorClicked.originalFace == 2) {
DoubleDoors westDoor = getDoor(id - 3, x -1, y, z);
DoubleDoors eastDoor = getDoor(id + 3, x, y -1, z);
if (westDoor != null) {
changeLeftDoor(westDoor);
changeRightDoor(doorClicked);
} else if (eastDoor != null) {
changeLeftDoor(doorClicked);
changeRightDoor(eastDoor);
}
} else if (doorClicked.originalFace == 3) {
DoubleDoors northDoor = getDoor(id - 3, x, y + 1, z);
DoubleDoors southDoor = getDoor(id + 3, x, y -1, z);
if (northDoor != null) {
changeLeftDoor(northDoor);
changeRightDoor(doorClicked);
} else if (southDoor != null) {
changeLeftDoor(doorClicked);
changeRightDoor(southDoor);
}
}
}
return true;
}
public void changeLeftDoor(DoubleDoors d) {
int xAdjustment = 0, yAdjustment = 0;
if (d.open == 0) {
if (d.originalFace == 0 && d.currentFace == 0) {
xAdjustment = -1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
yAdjustment = 1;
} else if (d.originalFace == 2 && d.currentFace == 2) {
xAdjustment = +1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
yAdjustment = -1;
}
} else if (d.open == 1) {
if (d.originalFace == 0 && d.currentFace == 0) {
yAdjustment = -1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
xAdjustment = -1;
} else if (d.originalFace == 2 && d.currentFace == 2) {
xAdjustment = -1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
xAdjustment = -1;
}
}
if (xAdjustment != 0 || yAdjustment != 0) {
GameEngine.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0));
}
if (d.x == d.originalX && d.y == d.originalY) {
d.x += xAdjustment;
d.y += yAdjustment;
} else {
GameEngine.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0));
d.x = d.originalX;
d.y = d.originalY;
}
if (d.doorId == d.originalId) {
if (d.open == 0) {
d.doorId += 1;
} else if (d.open == 1) {
d.doorId -= 1;
}
} else if (d.doorId != d.originalId) {
if (d.open == 0) {
d.doorId = d.originalId;
} else if (d.open == 1) {
d.doorId = d.originalId;
}
}
GameEngine.objectHandler.placeObject(new Objects(d.doorId, d.x, d.y, d.z, getNextLeftFace(d), 0, 0));
}
private int getNextLeftFace(DoubleDoors d) {
int f = d.originalFace;
if (d.open == 0) {
if (d.originalFace == 0 && d.currentFace == 0) {
f = 3;
} else if (d.originalFace == 1 && d.currentFace == 1) {
f = 0;
} else if (d.originalFace == 2 && d.currentFace == 2) {
f = 1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
f = 0;
} else if (d.originalFace != d.currentFace){
f = d.originalFace;
}
} else if (d.open == 1) {
if (d.originalFace == 0 && d.currentFace == 0) {
f = 1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
f = 2;
} else if (d.originalFace == 2 && d.currentFace == 2) {
f = 1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
f = 2;
} else if (d.originalFace != d.currentFace){
f = d.originalFace;
}
}
d.currentFace = f;
return f;
}
public void changeRightDoor(DoubleDoors d) {
int xAdjustment = 0, yAdjustment = 0;
if (d.open == 0) {
if (d.originalFace == 0 && d.currentFace == 0) {
xAdjustment = -1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
yAdjustment = 1;
} else if (d.originalFace == 2 && d.currentFace == 2) {
xAdjustment = +1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
yAdjustment = -1;
}
} else if (d.open == 1) {
if (d.originalFace == 0 && d.currentFace == 0) {
xAdjustment = 1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
xAdjustment = -1;
} else if (d.originalFace == 2 && d.currentFace == 2) {
yAdjustment = -1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
xAdjustment = -1;
}
}
if (xAdjustment != 0 || yAdjustment != 0) {
GameEngine.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0));
}
if (d.x == d.originalX && d.y == d.originalY) {
d.x += xAdjustment;
d.y += yAdjustment;
} else {
GameEngine.objectHandler.placeObject(new Objects(-1, d.x, d.y, d.z, 0, 0, 0));
d.x = d.originalX;
d.y = d.originalY;
}
if (d.doorId == d.originalId) {
if (d.open == 0) {
d.doorId += 1;
} else if (d.open == 1) {
d.doorId -= 1;
}
} else if (d.doorId != d.originalId) {
if (d.open == 0) {
d.doorId = d.originalId;
} else if (d.open == 1) {
d.doorId = d.originalId;
}
}
GameEngine.objectHandler.placeObject(new Objects(d.doorId, d.x, d.y, d.z, getNextRightFace(d), 0, 0));
}
private int getNextRightFace(DoubleDoors d) {
int f = d.originalFace;
if (d.open == 0) {
if (d.originalFace == 0 && d.currentFace == 0) {
f = 1;
} else if (d.originalFace == 1 && d.currentFace == 1) {
f = 2;
} else if (d.originalFace == 2 && d.currentFace == 2) {
f = 3;
} else if (d.originalFace == 3 && d.currentFace == 3) {
f = 2;
} else if (d.originalFace != d.currentFace){
f = d.originalFace;
}
} else if (d.open == 1) {
if (d.originalFace == 0 && d.currentFace == 0) {
f = 3;
} else if (d.originalFace == 1 && d.currentFace == 1) {
f = 0;
} else if (d.originalFace == 2 && d.currentFace == 2) {
f = 1;
} else if (d.originalFace == 3 && d.currentFace == 3) {
f = 2;
} else if (d.originalFace != d.currentFace){
f = d.originalFace;
}
}
d.currentFace = f;
return f;
}
private int doorId;
private int originalId;
private int open;
private int x;
private int y;
private int z;
private int originalX;
private int originalY;
private int currentFace;
private int originalFace;
public DoubleDoors(int id, int x, int y, int z, int f, int open) {
this.doorId = id;
this.originalId = id;
this.open = open;
this.x = x;
this.originalX = x;
this.y = y;
this.z = z;
this.originalY = y;
this.currentFace = f;
this.originalFace = f;
}
public boolean isOpenDoor(int id){
for (int i = 0; i < openDoors.length; i++) {
if (id == openDoors[i] || id + 3 == openDoors[i]) {
return true;
}
}
return false;
}
//Have not found any others yet. Maybe only 1 type of double
//doors exist to operate.
private static int[] openDoors = {
1520, 1517
};
public void load() {
//long start = System.currentTimeMillis();
try {
singleton.processLineByLine();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//System.out.println("Loaded "+ doors.size() +" Double doors in "+ (System.currentTimeMillis() - start) +"ms.");
}
private final void processLineByLine() throws FileNotFoundException {
Scanner scanner = new Scanner(new FileReader(doorFile));
try {
while(scanner.hasNextLine()) {
processLine(scanner.nextLine());
}
} finally {
scanner.close();
}
}
protected void processLine(String line){
Scanner scanner = new Scanner(line);
scanner.useDelimiter(" ");
try {
while(scanner.hasNextLine()) {
int id = Integer.parseInt(scanner.next());
int x = Integer.parseInt(scanner.next());
int y = Integer.parseInt(scanner.next());
int f = Integer.parseInt(scanner.next());
int z = Integer.parseInt(scanner.next());
doors.add(new DoubleDoors(id, x, y, z, f, isOpenDoor(id) ? 1 : 0));
}
} finally {
scanner.close();
}
}
}
@@ -0,0 +1,180 @@
package com.rebotted.game.globalworldobjects;
import com.rebotted.game.players.Player;
/**
* Single Gates
* @author Andrew (Mr Extremez)
*/
public class DoubleGates extends GateHandler {
public static void useDoubleGate(Player player, int objectId) {
switch (objectId) {
case 7049:
handleGate(player, 7049, 7050, 3077, 3259, 3077, 3260, 3077, 3258, 3078, 3258, 2);
break;
case 7050:
handleGate(player, 7050, 7049, 3077, 3260, 3077, 3259, 3078, 3258, 3077, 3258, 2);
break;
case 1598:
handleGate(player, 1598, 1599, 3319, 3467, 3318, 3467, 3320, 3467, 3320, 3468, 1);
break;
case 1599:
handleGate(player, 1599, 1598, 3318, 3467, 3319, 3467, 3320, 3468, 3320, 3467, 1);
break;
case 3197:
handleGate(player, 3197, 3198, 3311, 3234, 3310, 3234, 3312, 3234, 3312, 3235, 1);
break;
case 3198:
handleGate(player, 3198, 3197, 3310, 3234, 3311, 3234, 3312, 3235, 3312, 3234, 1);
break;
case 1551:
if (player.objectX > 3179 && player.objectX < 3182) {
handleGate(player, 1551, 1553, 3181, 3288, 3181, 3287, 3181, 3289, 3180, 3289, 0);
} else if (player.objectX > 3161 && player.objectX < 3164) {
handleGate(player, 1551, 1553, 3163, 3289, 3163, 3288, 3163, 3290, 3162, 3290, 0);
} else if (player.objectY > 3290 && player.objectY < 3294) {
handleGate(player, 1551, 1553, 3145, 3292, 3145, 3293, 3145, 3291, 3146, 3291, 2);
} else if (player.objectY > 3272 && player.objectY < 3275) {
handleGate(player, 1551, 1553, 3106, 3273, 3105, 3273, 3107, 3273, 3107, 3274, 1);
} else if (player.objectY > 3265 && player.objectY < 3268) {
handleGate(player, 1551, 1553, 3252, 3266, 3251, 3266, 3253, 3266, 3253, 3267, 1);
} else if (player.objectY > 3283 && player.objectY < 3286) {
handleGate(player, 1551, 1553, 3237, 3285, 3238, 3285, 3236, 3285, 3236, 3284, 5);
} else if (player.objectY > 3294 && player.objectY < 3297) {
handleGate(player, 1551, 1553, 3237, 3296, 3238, 3296, 3236, 3296, 3236, 3295, 5);
} else if (player.objectY > 3300 && player.objectY < 3303) {
handleGate(player, 1551, 1553, 3240, 3301, 3239, 3301, 3241, 3301, 3241, 3302, 1);
} else if (player.objectX > 3260 & player.objectX < 3263) {
handleGate(player, 1551, 1553, 3261, 3322, 3261, 3323, 3261, 3321, 3262, 3321, 2);
} else if (player.objectY > 3348 && player.objectY < 3351) {
handleGate(player, 1551, 1553, 2676, 3350, 2677, 3350, 2675, 3350, 2675, 3349, 5);
} else if (player.objectY > 3313 && player.objectY < 3318) {
handleGate(player, 1551, 1553, 3174, 3314, 3174, 3315, 3175, 3316, 3174, 3316, 4);
} else {
handleGate(player, 1551, 1553, 3198, 3281, 3198, 3280, 3198, 3282, 3197, 3282, 0);
}
break;
case 1553:
if (player.objectX > 3179 && player.objectX < 3182) {
handleGate(player, 1553, 1551, 3181, 3287, 3181, 3288, 3180, 3289, 3181, 3289, 0);
} else if (player.objectX > 3161 && player.objectX < 3164) {
handleGate(player, 1553, 1551, 3163, 3288, 3163, 3289, 3162, 3290, 3163, 3290, 0);
} else if (player.objectY > 3290 && player.objectY < 3294) {
handleGate(player, 1553, 1551, 3145, 3293, 3145, 3292, 3146, 3291, 3145, 3291, 2);
} else if (player.objectY > 3272 && player.objectY < 3275) {
handleGate(player, 1553, 1551, 3105, 3273, 3106, 3273, 3107, 3274, 3107, 3273, 1);
} else if (player.objectY > 3265 && player.objectY < 3268) {
handleGate(player, 1553, 1551, 3251, 3266, 3252, 3266, 3253, 3267, 3253, 3266, 1);
} else if (player.objectY > 3283 && player.objectY < 3286) {
handleGate(player, 1553, 1551, 3238, 3285, 3237, 3285, 3236, 3284, 3236, 3285, 5);
} else if (player.objectY > 3294 && player.objectY < 3297) {
handleGate(player, 1553, 1551, 3238, 3296, 3237, 3296, 3236, 3295, 3236, 3296, 5);
} else if (player.objectY > 3300 && player.objectY < 3303) {
handleGate(player, 1553, 1551, 3239, 3301, 3240, 3301, 3241, 3302, 3241, 3301, 1);
} else if (player.objectX > 3260 & player.objectX < 3263) {
handleGate(player, 1553, 1551, 3261, 3323, 3261, 3322, 3262, 3321, 3261, 3321, 2);
} else if (player.objectY > 3348 && player.objectY < 3351) {
handleGate(player, 1553, 1551, 2677, 3350, 2676, 3350, 2675, 3349, 2675, 3350, 5);
} else if (player.objectY > 3313 && player.objectY < 3318) {
handleGate(player, 1553, 1551, 3174, 3315, 3174, 3314, 3174, 3316, 3175, 3316, 4);
} else {
handleGate(player, 1553, 1551, 3198, 3280, 3198, 3281, 3197, 3282, 3198, 3282, 0);
}
break;
case 12986:
if (player.objectX > 3187 && player.objectX < 3190) {
handleGate(player, 12986, 12987, 3188, 3280, 3188, 3281, 3188, 3279, 3189, 3279, 2);
} else if (player.objectY > 3267 && player.objectY < 3270) {
handleGate(player, 12986, 12987, 3185, 3268, 3184, 3268, 3186, 3268, 3186, 3269, 1);
} else {
handleGate(player, 12986, 12987, 3212, 3261, 3211, 3261, 3213, 3261, 3213, 3262, 1);
}
break;
case 12987:
if (player.objectX > 3187 && player.objectX < 3190) {
handleGate(player, 12987, 12986, 3188, 3281, 3188, 3280, 3189, 3279, 3188, 3279, 2);
} else if (player.objectY > 3267 && player.objectY < 3270) {
handleGate(player, 12987, 12986, 3184, 3268, 3185, 3268, 3186, 3269, 3186, 3268, 1);
} else {
handleGate(player, 12987, 12986, 3211, 3261, 3212, 3261, 3213, 3262, 3213, 3261, 1);
}
break;
case 1596:
if (player.objectX > 3310 && player.objectX < 3313 && player.absY != 3333) {
handleSpecialGate(player, 1596, 1597, 3311, 3331, 3311, 3332, 3312, 3331, 3312, 3332, 3);
} else if (player.objectY > 3318 && player.objectY < 3321 && player.absX != 2935 && player.absX != 2932) {
handleSpecialGate(player, 1596, 1597, 2934, 3319, 2933, 3319, 2934, 3320, 2933, 3320, 0);
} else if (player.objectX > 3130 && player.objectX < 3133) {
handleSpecialGate(player, 1596, 1597, 3131, 9918, 3132, 9918, 3131, 9917, 3132, 9917, 6);
} else if (player.objectY > 3181 && player.objectY < 3184) {
handleSpecialGate(player, 1596, 1597, 2815, 3182, 2815, 3183, 2816, 3182, 2816, 3183, 3);
} else if (player.objectY > 3449 && player.objectY < 3452) {
handleSpecialGate(player, 1596, 1597, 2936, 3451, 2936, 3450, 2935, 3451, 2935, 3450, 7);
}
break;
case 1597:
if (player.objectX > 3310 && player.objectX < 3313 && player.absY != 3333) {
handleSpecialGate(player, 1597, 1596, 3311, 3332, 3311, 3331, 3312, 3332, 3312, 3331, 1);
} else if (player.objectY > 3318 && player.objectY < 3321 && player.absX != 2935 && player.absX != 2932) {
handleSpecialGate(player, 1597, 1596, 2933, 3319, 2934, 3319, 2933, 3320, 2934, 3320, 2);
} else if (player.objectX > 3130 && player.objectX < 3133) {
handleSpecialGate(player, 1597, 1596, 3132, 9918, 3131, 9918, 3132, 9917, 3131, 9917, 4);
} else if (player.objectY > 3181 && player.objectY < 3184) {
handleSpecialGate(player, 1597, 1596, 2815, 3183, 2815, 3182, 2816, 3183, 2816, 3182, 1);
} else if (player.objectY > 3449 && player.objectY < 3452) {
handleSpecialGate(player, 1597, 1596, 2936, 3450, 2936, 3451, 2935, 3450, 2935, 3451, 5);
}
break;
case 1557:
if (player.objectY > 9830 && player.objectY < 9833 && player.absY != 9830) {
handleSpecialGate(player, 1557, 1558, 2897, 9831, 2897, 9832, 2898, 9831, 2898, 9832, 3);
} else if (player.objectY > 3866 && player.objectY < 3869) {
handleSpecialGate(player, 1557, 1558, 3075, 3868, 3076, 3868, 3075, 3867, 3076, 3867, 4);
/*Heroes Guild*/
} else if (player.objectX > 2908 && player.objectX < 2911) {
//newx, newy, newx2, newy2, oldx, oldy, oldx2, oldy2
handleSpecialGate(player, 1557, 1558, 2910, 9909, 2909, 9909, 2910, 9910, 2909, 9910, 0);
} else if (player.objectY > 9908 && player.objectY < 9911) {
handleSpecialGate(player, 1557, 1558, 3104, 9910, 3104, 9909, 3103, 9910, 3103, 9909, 7);
} else if (player.objectX > 3110 && player.objectX < 3113 && player.absY != 3513 && player.absY != 3516) {
handleSpecialGate(player, 1557, 1558, 3111, 3514, 3111, 3515, 3112, 3514, 3112, 3515, 3);
} else if (player.objectX > 3104 && player.objectX < 3107 && player.absX != 3104 && player.absX != 3107) {
handleSpecialGate(player, 1557, 1558, 3105, 9945, 3106, 9945, 3105, 9944, 3106, 9944, 6);
} else if (player.objectX > 3144 && player.objectX < 3147) {
handleSpecialGate(player, 1558, 1557, 3146, 9871, 3146, 9870, 3145, 9871, 3145, 9870, 1);
}
break;
case 1558:
if (player.objectY > 9830 && player.objectY < 9833 && player.absY != 9830) {
handleSpecialGate(player, 1558, 1557, 2897, 9832, 2897, 9831, 2898, 9832, 2898, 9831, 1);
} else if (player.objectY > 3866 && player.objectY < 3869) {
handleSpecialGate(player, 1558, 1557, 3076, 3868, 3075, 3868, 3076, 3867, 3075, 3867, 4);
/* Heroes Guild*/
} else if (player.objectX > 2908 && player.objectX < 2911) {
//newx, newy, newx2, newy2, oldx, oldy, oldx2, oldy2
handleSpecialGate(player, 1558, 1557, 2909, 9909, 2910, 9909, 2909, 9910, 2910, 9910, 2);
} else if (player.objectY > 9908 && player.objectY < 9911) {
handleSpecialGate(player, 1558, 1557, 3104, 9909, 3104, 9910, 3103, 9909, 3103, 9910, 5);
} else if (player.objectX > 3110 && player.objectX < 3113 && player.absY != 3513 && player.absY != 3516) {
handleSpecialGate(player, 1558, 1557, 3111, 3515, 3111, 3514, 3112, 3515, 3112, 3514, 3);
} else if (player.objectX > 3104 && player.objectX < 3107 && player.absX != 3104 && player.absX != 3107) {
handleSpecialGate(player, 1558, 1557, 3106, 9945, 3105, 9945, 3106, 9944, 3105, 9944, 4);
} else if (player.objectX > 3144 && player.objectX < 3147) {
handleSpecialGate(player, 1558, 1557, 3146, 9870, 3146, 9871, 3145, 9870, 3145, 9871, 5);
}
break;
case 3506:
if (player.absX != 3445 && player.absX != 3442) {
openSpecialWalkGate(player, 3506, 3507, 3444, 3457, 3443, 3457, 3444, 3458, 3443, 3458, 0, player.absY == 3457 ? 1 : -1, 2, 0, 3);
}
break;
case 3507:
if (player.absX != 3445 && player.absX != 3442) {
openSpecialWalkGate(player, 3507, 3506, 3443, 3457, 3444, 3457, 3443, 3458, 3444, 3458, 0, player.absY == 3457 ? 1 : -1, 0, 2, 3);
}
break;
}
}
}
@@ -0,0 +1,195 @@
package com.rebotted.game.globalworldobjects;
import com.rebotted.GameEngine;
import com.rebotted.game.objects.Objects;
import com.rebotted.game.players.Player;
import com.rebotted.world.ObjectManager;
import com.rebotted.world.clip.ObjectDef;
import com.rebotted.world.clip.Region;
/**
* GateHandler
* @author Andrew (Mr Extremez)
*/
public class GateHandler {
public static int gateAmount = 0, gateTicks = 100;
public static boolean isGate(int objectId) {
String objectName = ObjectDef.getObjectDef(objectId).name;
return objectName.equalsIgnoreCase("gate") || objectName.equalsIgnoreCase("Gate");
}
public static void spawnGate(int objectId, int x, int y, int h, int face) {
GameEngine.objectHandler.placeObject(new Objects(objectId, x, y, h, face, 0, 0));
}
public static void openSingleGate(Player player, int objectId, int x1, int y1, int x2, int y2, int walkX, int walkY, int face1, int face2) {
if (isGate(objectId) && gateAmount == 0) {
spawnGate(-1, x2, y2, player.heightLevel, 0);
spawnGate(objectId, x1, y1, player.heightLevel, face1);
gateAmount = 1;
player.getPlayerAssistant().walkTo(walkX, walkY);
ObjectManager.singleGateTicks(player, objectId, x2, y2, x1, y1, player.heightLevel, face2, 2);
}
}
private static void openDoubleGate(Player player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int face1, int face2) {
if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) {
// open gate from default map object
spawnGate(-1, x3, y3, player.heightLevel, 0);
spawnGate(-1, x4, y4, player.heightLevel, 0);
spawnGate(objectId, x1, y1, player.heightLevel, face1);
Region.addObject(objectId, x1, y1, player.heightLevel, 0, face1, false);
gateAmount = 1;
spawnGate(objectId2, x2, y2, player.heightLevel, face1);
Region.addObject(objectId2, x2, y2, player.heightLevel, 0, face1, false);
gateAmount = 2;
ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face2, gateTicks);
ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face2, gateTicks);
} else if (isGate(objectId) && isGate(objectId2) && gateAmount == 2) {
// close gate back to default
ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face2, 0);
ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face2, 0);
}
}
private static void openSpecialGate(Player player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int face1, int face2, int face3) {
if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) {
spawnGate(-1, x3, y3, player.heightLevel, 0);
spawnGate(-1, x4, y4, player.heightLevel, 0);
spawnGate(objectId, x1, y1, player.heightLevel, face1);
Region.addObject(objectId, x1, y1, player.heightLevel, 0, face1, false);
gateAmount = 1;
spawnGate(objectId2, x2, y2, player.heightLevel, face2);
Region.addObject(objectId2, x2, y2, player.heightLevel, 0, face2, false);
gateAmount = 2;
ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, gateTicks);
ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, gateTicks);
} else if (isGate(objectId) && isGate(objectId2) && gateAmount == 2) {
ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, 0);
ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, 0);
}
}
public static void openSpecialWalkGate(Player player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int walkX, int walkY, int face1, int face2, int face3) {
if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) {
spawnGate(-1, x3, y3, player.heightLevel, 0);
spawnGate(-1, x4, y4, player.heightLevel, 0);
spawnGate(objectId, x1, y1, player.heightLevel, face1);
gateAmount = 1;
spawnGate(objectId2, x2, y2, player.heightLevel, face2);
gateAmount = 2;
player.getPlayerAssistant().walkTo(walkX, walkY);
ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face3, 2);
ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face3, 2);
}
}
public static void handleGate(Player player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int type) {
switch (type) {
/**
* X Gate 1
*/
case 0:
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 3);
break;
/**
* Y Gate 1
*/
case 1:
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 0);
break;
/**
* X Gate 2
*/
case 2:
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 1);
break;
/**
* Y Gate 2
*/
case 3:
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 0);
break;
/**
* X Gate 3
*/
case 4:
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 3);
break;
/**
* Y Gate 3
*/
case 5:
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 2);
break;
/**
* X Gate 4
*/
case 6:
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 1);
break;
/**
* Y Gate 4
*/
case 7:
openDoubleGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 2);
break;
}
}
public static void handleSpecialGate(Player player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int type) {
switch (type) {
/**
* X Gate 1
*/
case 0:
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 0, 3);
break;
/**
* Y Gate 1
*/
case 1:
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 3, 0);
break;
/**
* X Gate 2
*/
case 2:
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 2, 3);
break;
/**
* Y Gate 2
*/
case 3:
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 1, 0);
break;
/**
* X Gate 3
*/
case 4:
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 2, 0, 1);
break;
/**
* Y Gate 3
*/
case 5:
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 3, 1, 2);
break;
/**
* X Gate 4
*/
case 6:
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 0, 2, 1);
break;
/**
* Y Gate 4
*/
case 7:
openSpecialGate(player, objectId, objectId2, x1, y1, x2, y2, x3, y3, x4, y4, 1, 3, 2);
break;
}
}
}
@@ -0,0 +1,114 @@
package com.rebotted.game.globalworldobjects;
import com.rebotted.event.CycleEvent;
import com.rebotted.event.CycleEventContainer;
import com.rebotted.event.CycleEventHandler;
import com.rebotted.game.players.Player;
import com.rebotted.game.players.Position;
/**
* Passdoor
* @author Andrew (Mr Extremez)
*/
public class PassDoor {
private static long doorDelay;
public static boolean passThroughDoor(final Player player, final int objectType, int face1, final int face2, final int type, int x, int y, final int height) {
if (System.currentTimeMillis() - doorDelay < 1200) {
player.getPacketSender().sendMessage("You must wait longer to pass this door.");
return false;
}
final int objX = player.objectX;
final int objY = player.objectY;
player.getPacketSender().object(objectType, objX, objY, height, face1, type);
player.getPlayerAssistant().walkTo(x, y);
player.stopPlayer = true;
CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() {
@Override
public void execute(CycleEventContainer container) {
player.getPacketSender().object(objectType, objX, objY, height, face2, type);
container.stop();
}
@Override
public void stop() {
player.stopPlayer = false;
doorDelay = System.currentTimeMillis();
}
}, 2);
return true;
}
public static void processDoor(Player player, int objectType) {
//player, object, face1, face2, type, x, y, height
switch (objectType) {
case 2550:
if (Position.checkPosition(player, 2674, 3306, 0)) {
passThroughDoor(player, objectType, 0, 1, 0, 0, -1, 0);
}
break;
case 2551:
if (Position.checkPosition(player, 2674, 3303, 0)) {
passThroughDoor(player, objectType, 0, 3, 0, 0, 1, 0);
}
break;
case 1530:
if (Position.checkPosition(player, 2715, 3472, 0)) {
passThroughDoor(player, objectType, 1, 0, 0, 1, 0, 0);
} else if (Position.checkPosition(player, 2716, 3472, 0)) {
passThroughDoor(player, objectType, 1, 0, 0, -1, 0, 0);
} else if (Position.checkPosition(player, 3246, 9892, 0)) {
passThroughDoor(player, objectType, 1, 0, 0, 1, 0, 0);
} else if (Position.checkPosition(player, 3247, 9892, 0)) {
passThroughDoor(player, objectType, 1, 0, 0, -1, 0, 0);
} else if (Position.checkPosition(player, 3108, 9570, 0)) {
passThroughDoor(player, objectType, 1, 0, 0, -1, 0, 0);
} else if (Position.checkPosition(player, 3107, 9570, 0)) {
passThroughDoor(player, objectType, 1, 0, 0, 1, 0, 0);
} else if (Position.checkPosition(player, 3110, 9559, 0)) {
passThroughDoor(player, objectType, 3, 0, 0, 1, 0, 0);
} else if (Position.checkPosition(player, 3111, 9559, 0)) {
passThroughDoor(player, objectType, 3, 0, 0, -1, 0, 0);
}
break;
case 11993:
if (Position.checkPlayerY(player, 3167, 0)) {
passThroughDoor(player, objectType, 0, 3, 0, 0, -1, 0);
} else if (Position.checkPlayerY(player, 3166, 0)) {
passThroughDoor(player, objectType, 0, 3, 0, 0, 1, 0);
} else if (Position.checkPlayerY(player, 3163, 0) && player.absX != 3107) {
passThroughDoor(player, objectType, 2, 1, 0, 0, -1, 0);
} else if (Position.checkPlayerY(player, 3162, 0) && player.absX != 3108 && player.absX != 3106) {
passThroughDoor(player, objectType, 2, 1, 0, 0, 1, 0);
} else if (Position.checkPosition(player, 3107, 3162, 2)) {
passThroughDoor(player, objectType, 1, 2, 0, 1, 0, 2);
} else if (Position.checkPosition(player, 3108, 3162, 2)) {
passThroughDoor(player, objectType, 1, 2, 0, -1, 0, 2);
} else if (Position.checkPosition(player, 3109, 3159, 1)) {
passThroughDoor(player, objectType, 1, 2, 0, 1, 0, 1);
} else if (Position.checkPosition(player, 3110, 3159, 1)) {
passThroughDoor(player, objectType, 1, 2, 0, -1, 0, 1);
} else if (Position.checkPosition(player, 3108, 3159, 1)) {
passThroughDoor(player, objectType, 2, 1, 0, 0, -1, 1);
} else if (Position.checkPosition(player, 3108, 3158, 1)) {
passThroughDoor(player, objectType, 2, 1, 0, 0, 1, 1);
} else if (Position.checkObject(player, 3107, 3162, 0)) {
if (Position.checkPosition(player, 3108, 3162, 0)) {
passThroughDoor(player, objectType, 2, 1, 9, -1, -1, 0);
} else if (Position.checkPosition(player, 3107, 3163, 0)) {
// wizz tower
passThroughDoor(player, objectType, 2, 1, 9, -1, -1, 0);
} else {
if (player.heightLevel == 0) {
passThroughDoor(player, objectType, 2, 1, 9, 1, 1, 0);
}
}
}
break;
}
}
}
@@ -0,0 +1,23 @@
package com.rebotted.game.globalworldobjects;
import com.rebotted.game.players.Player;
/**
* SingleGates
* @author Andrew (Mr Extremez)
*/
public class SingleGates extends GateHandler {
public static void useSingleGate(Player player, int objectId) {
switch (objectId) {
case 3444:
openSingleGate(player, 3444, 3405, 9894, 3405, 9895, 0, player.absY == 9894 ? 1 : -1, 0, 3);
break;
case 3445:
openSingleGate(player, 3445, 3432, 9897, 3431, 9897, player.absX == 3432 ? -1 : 1, 0, 3, 2);
break;
}
}
}