Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Control the movement and the collision of the character
- * @param map The map which we want to check collision
- */
- public void ManageMovement(Map map) {
- boolean collision = false;
- if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {
- for(int i = 0; i < map.GetNumLayers(); i++) {
- if((LeftTile(map, i, 0) > 128) || (LeftTile(map, i, 1) > 128)) {
- collision = true;
- }
- }
- if(!collision) AddPos(-vel, 0.0f);
- }
- else if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
- for(int i = 0; i < map.GetNumLayers(); i++) {
- if((RightTile(map, i, 0) > 128) || (RightTile(map, i, 1) > 128)) {
- collision = true;
- }
- }
- if(!collision) AddPos(vel, 0.0f);
- }
- collision = false;
- if(Keyboard.isKeyDown(Keyboard.KEY_UP)) {
- for(int i = 0; i < map.GetNumLayers(); i++) {
- if((UpTile(map, i, 0) > 128) || (UpTile(map, i, 1) > 128)) {
- collision = true;
- }
- }
- if(!collision) AddPos(0.0f, -vel);
- }
- else if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
- for(int i = 0; i < map.GetNumLayers(); i++) {
- if((DownTile(map, i, 0) > 128) || (DownTile(map, i, 1) > 128)) {
- collision = true;
- }
- }
- if(!collision) AddPos(0.0f, vel);
- }
- }
- /**
- * A method to get the upper tile next to the character
- * @param map The map which we want to check the tile
- * @param layer The layer of the map
- * @param corner 0 indicates the upper-left corner of the character. 1 indicates the upper-right corner of the character
- * @return The kind of tile next to the character in that direction
- */
- public int UpTile(Map map, int layer, int corner) {
- int tile = 255;
- switch(corner) {
- case 0:
- tile = map.GetValue(layer, (int) (x/size), (int) ((y-1)/size));
- break;
- case 1:
- tile = map.GetValue(layer, (int) ((x+size-1)/size), (int) ((y-1)/size));
- break;
- }
- return tile;
- }
- public int LeftTile(Map map, int layer, int corner) {
- int tile = 255;
- switch(corner) {
- case 0:
- tile = map.GetValue(layer, (int) ((x-1)/size), (int) (y/size));
- break;
- case 1:
- tile = map.GetValue(layer, (int) ((x-1)/size), (int) ((y+size-1)/size));
- break;
- }
- return tile;
- }
- public int DownTile(Map map, int layer, int corner) {
- int tile = 255;
- switch(corner) {
- case 0:
- tile = map.GetValue(layer, (int) (x/size), (int) (y/size + 1));
- break;
- case 1:
- tile = map.GetValue(layer, (int) ((x+size-1)/size), (int) (y/size + 1));
- break;
- }
- return tile;
- }
- public int RightTile(Map map, int layer, int corner) {
- int tile = 255;
- switch(corner) {
- case 0:
- tile = map.GetValue(layer, (int) (x/size + 1), (int) (y/size));
- break;
- case 1:
- tile = map.GetValue(layer, (int) (x/size + 1), (int) ((y+size-1)/size));
- break;
- }
- return tile;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement