Skip to content
This repository has been archived by the owner on Feb 6, 2020. It is now read-only.

Commit

Permalink
world height is now dependent on screen size and starting on collecti…
Browse files Browse the repository at this point in the history
…ng screen input it does however not work yet
  • Loading branch information
peevees committed Feb 16, 2017
1 parent dd4867a commit 364f31a
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 129 deletions.
167 changes: 59 additions & 108 deletions app/src/main/java/com/example/morgan/WorldOfMikMog/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,13 @@


//TODO change walking code, add animation,
public class Main extends AppCompatActivity implements View.OnTouchListener {

//gesture detector
private GestureDetectorCompat detector;
public class Main extends AppCompatActivity {

//TextViews


//ImageViews
private ImageView[][] Cell;
private ImageView player;
private char[][] world;

//Size
private int screenWidth;
Expand All @@ -37,13 +33,6 @@ public class Main extends AppCompatActivity implements View.OnTouchListener {
private int pictureWidth;
private int pictureHeight;

//postion
private int playerY;
private int playerX;

//Speed
private int playerSpeed;

//Sounds and music
private SoundPlayer sound;
private MediaPlayer music;
Expand All @@ -58,13 +47,7 @@ protected void onCreate(Bundle savedInstanceState) {
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

//detector
detector = new GestureDetectorCompat(this, onSwipeListener);
//player.setOnTouchListener(this);
| View.SYSTEM_UI_FLAG_FULLSCREEN);

//music & sound
sound = new SoundPlayer(this);
Expand All @@ -74,20 +57,12 @@ protected void onCreate(Bundle savedInstanceState) {
music.setVolume(0.1f, 0.1f);
music.setLooping(true);

//speed
playerSpeed = Math.round(screenHeight / 60F);



//create world print world and create player and print player
createWorld();
printWorld();
player();

GridLayout swipeControl = (GridLayout) findViewById(R.id.grid);
swipeControl.setOnTouchListener(this);


}

public void pictureSize(){

//get screen size
Expand All @@ -100,19 +75,17 @@ public void pictureSize(){

pictureWidth = screenWidth / columnCount;
pictureHeight = screenHeight / rowCount;
Log.d("Picture_width", "the width of the picture is " + pictureWidth);
Log.d("Picture_height", "the height of the picture is " + pictureHeight);

/*pxtodp
final float scale = getResources().getDisplayMetrics().density;
dpWidthInPx = (int) (pictureWidth * scale);//TODO make size of pictures depending on size of screen
dpWidthInPx = (int) (pictureWidth * scale);
dpHeightInPx = (int) (pictureHeight * scale);
*/
}
public void player(){

pictureSize();
PlayerView player = new PlayerView(this);
PlayerView player = new PlayerView(this, screenWidth, screenHeight);
player.setImageResource(R.drawable.bob);
player.setId(R.id.player);
FrameLayout.LayoutParams playerParams = new FrameLayout.LayoutParams(pictureWidth ,pictureHeight );
Expand All @@ -122,14 +95,13 @@ public void player(){
player.setLayoutParams(playerParams);
frameLayout.addView(player);

player.getLayoutParams().height = pictureHeight;//dpHeightInPx;
player.getLayoutParams().height = pictureHeight;
player.getLayoutParams().width = pictureWidth;

player.requestLayout();


}
public void printWorld(){//TODO make dependent on screensize
public void printWorld(){

pictureSize();
ImageView myImageView;
Expand All @@ -139,55 +111,64 @@ public void printWorld(){//TODO make dependent on screensize
gridLayout.setColumnCount(columnCount);
gridLayout.setRowCount(rowCount);

for(int i = 0; i < (columnCount*rowCount); i ++){
myImageView = new ImageView(this);
myImageView.setImageResource(R.drawable.grassdb);
for(int i = 0; i < rowCount; i ++){
for(int j = 0; j < columnCount; j ++) {
myImageView = new ImageView(this);

switch(world[i][j]) {
case 'T':
myImageView.setImageResource(R.drawable.tree);
break;
case 'S':
myImageView.setImageResource(R.drawable.stone);
break;
case 'G':
myImageView.setImageResource(R.drawable.grass);
break;

GridLayout.LayoutParams gridParams = new GridLayout.LayoutParams();
}
Log.d("World", "" + world[i][j]);

myImageView.setLayoutParams(gridParams);

gridLayout.addView(myImageView);
myImageView.getLayoutParams().height = pictureHeight;//dpHeightInPx;
myImageView.getLayoutParams().width = pictureWidth;
myImageView.requestLayout();
}
}
public void createWorld(){
GridLayout.LayoutParams gridParams = new GridLayout.LayoutParams();

Log.d("screenWidth", "screen width is : " + screenWidth);
Log.d("screenHeight", "screen height is : " + screenHeight);
myImageView.setLayoutParams(gridParams);
gridLayout.addView(myImageView);

//Cell = new ImageView[][]
myImageView.getLayoutParams().height = pictureHeight;//dpHeightInPx;
myImageView.getLayoutParams().width = pictureWidth;
myImageView.requestLayout();
}
}
}
/*
//change position
public void changePos() {
//move player
switch (direction){
case left:
playerX -= playerSpeed;
break;
case right:
playerX += playerSpeed;
break;
case up:
playerY += playerSpeed;
break;
case down:
playerX -= playerSpeed;
break;
default:
playerX = playerX;
break;
public boolean moveAllowed(int posX, int posY){
Log.d("IN_METHOD", "METHOD moveAllowed entered");
if(posX < 0 || posY < 0 || posX >= columnCount || posY >= rowCount) {
Log.d("IN_SCREEN_CHECK", "IF inside screen entered");
return false;
}
//Check player position//TODO check player to stay inside frame and against objects
if(world[posY][posX] == 'G') {
Log.d("IN_GRASS_CHECK", "IF grass check entered");
return true;
}
Log.d("IN_METHOD", "IF moveAllowed left");
return false;
}
*/
public void createWorld(){

world = new char[][]{
{'G', 'G', 'G', 'G', 'S', 'T', 'S', 'G', 'G', 'G', 'G', 'T', 'T', 'T', 'T', 'T'},
{'T', 'G', 'G', 'S', 'S', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'T', 'T', 'T', 'T'},
{'T', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'T', 'T', 'T'},
{'T', 'S', 'G', 'G', 'S', 'S', 'G', 'S', 'S', 'G', 'G', 'S', 'G', 'G', 'T', 'T'},
{'G', 'G', 'G', 'G', 'S', 'S', 'G', 'S', 'G', 'G', 'S', 'S', 'S', 'G', 'G', 'T'},
{'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'S', 'S', 'S', 'G', 'G', 'G'},
{'S', 'G', 'G', 'G', 'T', 'T', 'T', 'G', 'G', 'G', 'S', 'S', 'S', 'G', 'G', 'G'},
{'G', 'G', 'G', 'T', 'G', 'G', 'G', 'T', 'G', 'G', 'G', 'S', 'G', 'G', 'G', 'S'},
{'G', 'T', 'T', 'G', 'G', 'T', 'G', 'G', 'T', 'G', 'G', 'G', 'G', 'G', 'S', 'S'},
{'G', 'G', 'G', 'G', 'T', 'T', 'T', 'G', 'G', 'G', 'G', 'G', 'G', 'S', 'S', 'S'}
};

}//TODO check player against objects

//disable return button
@Override
Expand All @@ -202,34 +183,4 @@ public boolean dispatchKeyEvent(KeyEvent event){
return super.dispatchKeyEvent(event);
}


@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return detector.onTouchEvent(motionEvent);
}

OnSwipeListener onSwipeListener = new OnSwipeListener() {

@Override
public boolean onSwipe(Direction direction) {

// Possible implementation
if(direction == Direction.left|| direction == Direction.right) {
Log.d("LEFTRIGHT", "left or right swipe");
playerX -= playerSpeed;
// Do something COOL like animation or whatever you want
// Refer to your view if needed using a global reference
return true;
}
else if(direction == Direction.up|| direction == Direction.down) {
Log.d("DOWNUP", "up or down swipe");
playerY -= playerSpeed;
// Do something COOL like animation or whatever you want
// Refer to your view if needed using a global reference
return true;
}
return super.onSwipe(direction);
}
};

}
87 changes: 66 additions & 21 deletions app/src/main/java/com/example/morgan/WorldOfMikMog/PlayerView.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,36 @@

public class PlayerView extends ImageView {

//movement
private float touchStartX;
private float touchStartY;
private float touchEndX;
private float touchEndY;
private float deltaY;
private float deltaX;

//screen
private int screenWidth;
private int screenHeight;

//player
private ImageView player;
private float playerY;
private float playerX;
private float playerWidth;
private float playerHeight;
private int playerPosX = 0;
private int playerPosY = 0;

public PlayerView(Context context){
public PlayerView(Context context, int screenW, int screenH){//constructor
super(context);
this.screenWidth = screenW;
this.screenHeight = screenH;
}
public PlayerView(Context context, AttributeSet attrs){
super(context, attrs);
}

@Override
public boolean onTouchEvent(MotionEvent event){

Expand All @@ -43,36 +54,70 @@ public boolean onTouchEvent(MotionEvent event){
case(MotionEvent.ACTION_DOWN):
touchStartX = event.getX();
touchStartY = event.getY();

// Log.d("PRESSED_DOWN", "press down on: " + touchStartX + ", " + touchStartY);
return true;
case(MotionEvent.ACTION_UP):
touchEndX = event.getX();
touchEndY = event.getY();

//Log.d("PRESSED_UP", "press up on: " + touchEndX + ", " + touchEndY);
deltaY = touchStartY - touchEndY;
deltaX = touchStartX - touchEndX;
Log.d("SWIPED", "Swiped with delta: " + deltaX + ", " + deltaY);
if (deltaY > 50 && deltaX < 10) {//up
if(((Main)getContext()).moveAllowed(playerPosX, playerPosY-1)){
playerPosY--;

if(deltaY > 50 && deltaX < 10){//up
Log.d("APP", " inside the allowed swipe UP area");
player.setY(playerY - playerHeight);
}else if(deltaY < -50 && deltaX < 10){//down
Log.d("APP", " inside the allowed swipe DOWN area");
player.setY(playerY + playerHeight);
}else if(deltaY < 10 && deltaX > 50){//left
Log.d("APP", " inside the allowed swipe LEFT area");
player.setX(playerX - playerWidth);
}else if(deltaY < 10 && deltaX < -50){//right
Log.d("APP", " inside the allowed swipe RIGHT area");
player.setX(playerX + playerWidth);
}
player.setY(playerY - playerHeight);
playerY = player.getY();
}
Log.d("POS_AFTER_MOVEMENT", "UP move playerY: " + playerY + " playerPosY: " + playerPosY);
/*
if(playerY - playerHeight >= 0) {
player.setY(playerY - playerHeight);
playerY = player.getY();
}
*/
} else if (deltaY < -50 && deltaX < 10) {//down
if(((Main)getContext()).moveAllowed(playerPosX, playerPosY+1)){
playerPosY++;
player.setY(playerY + playerHeight);
playerY = player.getY();
}
Log.d("POS_AFTER_MOVEMENT", "DOWN move playerY: " + playerY + " playerPosY: " + playerPosY);
/*
if(playerY + playerHeight < screenHeight - playerHeight) {
player.setY(playerY + playerHeight);
playerY = player.getY();
}
*/
} else if (deltaY < 10 && deltaX > 50) {//left
if(((Main)getContext()).moveAllowed(playerPosX-1, playerPosY)){
playerPosX--;
player.setX(playerX - playerWidth);
playerX = player.getX();

}
Log.d("POS_AFTER_MOVEMENT", "LEFT move playerX: " + playerX + " playerPosX: " + playerPosX);
/*
if(playerX - playerWidth <= 0) {
player.setX(playerX - playerWidth);
playerX = player.getX();
}
*/
} else if (deltaY < 10 && deltaX < -50) {//right
if(((Main)getContext()).moveAllowed(playerPosX+1, playerPosY)){
playerPosX++;
player.setX(playerX + playerWidth);
playerX = player.getX();
}
Log.d("POS_AFTER_MOVEMENT", "RIGHT move playerX: " + playerX + " playerPosX: " + playerPosX);
/*
if(playerX + playerWidth < screenWidth - playerWidth) {
player.setX(playerX + playerWidth);
playerX = player.getX();
}
*/
}
return true;
default:
return super.onTouchEvent(event);
}

}
}
}

0 comments on commit 364f31a

Please sign in to comment.