public SoccerMatch(int matchType, Playmode playmode) {
		super(matchType, playmode);
		this.pressedKeys = new HashSet<>();
		this.lastContactUserID = -1;
		this.playerAnimationTimer = 6;
		this.ballSpeedRun = 5.0;
		this.ballSpeedShoot = 9.0;
		this.ballSpeedReduction = 0.2;
		this.animationStand = "STAND";
		this.animationMove = "MOVE";
		this.fieldSize = new Dimension(626, 307);
		this.fieldStart = new Point(47, 49);
		this.goal = false;
		this.goalDisplayCounter = 0;
		this.goalDisplayCounterMax = 30;
		this.skipRepaintingCounter = 0;
		this.gameTimerMax = (int)(0.5 * 60 * 1000 / GAMEINTERVAL);
		this.currentGameTime = 0;
		GameObject ball = new GameObject(fieldStart.x + fieldSize.width / 2 - (20/2), fieldStart.y + fieldSize.height / 2 - (20/2), new Dimension(20,20));
		ball.setSpeedReduction(ballSpeedReduction);
		ball.setAnimationCounterMax(8);
		this.gameObjects.put("BALL", ball);
		this.gameObjects.put("BACKGROUND", new GameObject(0, 0, new Dimension(getWidth(), getHeight())));
		this.gameObjects.put("GOAL1", new GameObject(45, 162, new Dimension(3, 82)));
		this.gameObjects.put("GOAL2", new GameObject(674, 162, new Dimension(3, 82)));
		this.gameObjects.put("TOUCH_TOP", new GameObject(40, 48, new Dimension(640, 3)));
		this.gameObjects.put("TOUCH_BOTTOM", new GameObject(40, 358, new Dimension(640, 3)));
		this.gameObjects.put("GOAL_LINE_TEAM1_TOP", new GameObject(40, 48, new Dimension(3, 112)));
		this.gameObjects.put("GOAL_LINE_TEAM1_BOTTOM", new GameObject(40, 244, new Dimension(3, 112)));
		this.gameObjects.put("GOAL_LINE_TEAM2_TOP", new GameObject(680, 48, new Dimension(3, 112)));
		this.gameObjects.put("GOAL_LINE_TEAM2_BOTTOM", new GameObject(680, 244, new Dimension(3, 112)));
		// Check playmode and create Objects
		switch (this.matchType) {
		case TEAM:{
			User[] user = playmode.getTeams()[0].getUser();
			int xOffset = fieldSize.width / 30;
			int yOffset = fieldSize.height / ((user.length + 1) / 2);
			for(int i = 0; i < user.length; i++){
				GameObject newPlayer = new GameObject(fieldStart.x + xOffset + (i / 2 == 0 ? xOffset : 0), fieldStart.y + yOffset + yOffset * (i/2), new Dimension(21,21));
				newPlayer.setAnimationCounterMax(playerAnimationTimer);
				gameObjects.put("PLAYER" + user[i].getID(), newPlayer);
			}
			user = playmode.getTeams()[1].getUser();
			for(int i = 0; i < user.length; i++){
				GameObject newPlayer = new GameObject(fieldStart.x + fieldSize.width - (xOffset + (i / 2 == 0 ? xOffset : 0)), fieldStart.y + fieldSize.height - (yOffset + yOffset * (i/2)), new Dimension(21,21));
				newPlayer.setAnimationCounterMax(playerAnimationTimer);
				gameObjects.put("PLAYER" + user[i].getID(), newPlayer);
			}
			break;
		}
		case TEST:{
			for (Team team : playmode.getTeams()) {
				for (User user : team.getUser()) {
					GameObject newPlayer = new GameObject(fieldStart.x + fieldSize.width / 2, fieldStart.y + fieldSize.height / 2, new Dimension(21,21));
					newPlayer.setAnimationCounterMax(playerAnimationTimer);
					gameObjects.put("PLAYER" + user.getID(), newPlayer);
				}
			}
			break;
		}
		default:
			break;
		}
		imagesLoaded = false;
		score = new int[2];
		score[0] = 0;
		score[1] = 0;
	}