public void update(float deltaTime) { this.timer += deltaTime; // timer for endscreen this.timerCheckpoint += deltaTime; // timer for endscreen // Input Update controller.update(deltaTime); // Netzwerk Update this.updateEvents(); if (controller.character != null) { // FIXME: last and current postition are always equal // if (controller.character.currentPosition.x != controller.character.lastPosition.x || // controller.character.currentPosition.y != controller.character.lastPosition.y) deltaTimeUpdate += deltaTime; if (deltaTimeUpdate > 0.0005f) { MoveCharacter move = new MoveCharacter(); move.x = controller.character.currentPosition.x; move.y = controller.character.currentPosition.y; move.direction = controller.character.direction.getValue(); move.idle = controller.character.idle; client.sendTCP(move); deltaTimeUpdate = 0; } } Camera cam = CameraHelper.instance.camera; // The camera dimensions, halved float cameraHalfWidth = cam.viewportWidth * .5f; float cameraHalfHeight = cam.viewportHeight * .5f; // Move camera after player as normal if (controller.character != null) { int pos_x = (int) controller.character.currentPosition.x; if (pos_x % 2 == 0) pos_x++; int pos_y = (int) controller.character.currentPosition.y; if (pos_y % 2 == 0) pos_y++; CameraHelper.instance.camera.position.set(pos_x, pos_y, 0); } float cameraLeft = cam.position.x - cameraHalfWidth; float cameraRight = cam.position.x + cameraHalfWidth; float cameraBottom = cam.position.y - cameraHalfHeight; float cameraTop = cam.position.y + cameraHalfHeight; // Horizontal axis if (mapPixelWidth < cam.viewportWidth) { cam.position.x = mapPixelWidth / 2; } else if (cameraLeft <= 0) { cam.position.x = 0 + cameraHalfWidth; } else if (cameraRight >= mapPixelWidth) { cam.position.x = mapPixelWidth - cameraHalfWidth; } // Vertical axis if (mapPixelHeight < cam.viewportHeight) { cam.position.y = mapPixelHeight / 2; } else if (cameraBottom <= 0) { cam.position.y = 0 + cameraHalfHeight; } else if (cameraTop >= mapPixelHeight) { cam.position.y = mapPixelHeight - cameraHalfHeight; } // update objects checkpointCount = 0; deadTouries = 0; playingTouries = 0; for (GameObject obj : objs.getObjects()) { obj.update(deltaTime); resetIfOutsideOfMap(obj); if (obj instanceof CheckpointGameObject && ((CheckpointGameObject) obj).checked) { checkpointCount++; } // check for playing Tourist if (obj instanceof TouriCharacterObject) { playingTouries++; } // check for dead players if (obj instanceof CharacterObject) { if (((CharacterObject) obj).isDead) { deadTouries++; } } } // System.out.println(" timer: " + timer); checkDeadTouries(this.timer > MAX_TIMER && MAX_TIMER != 0); // System.out.println(" MAX_TIMER: " + MAX_TIMER); System.out.println(" timerCheckpoint: " + timerCheckpoint); checkCheckpoints(this.timerCheckpoint > MAX_TIMER_CHECKPOINT && MAX_TIMER_CHECKPOINT != 0); System.out.println(" MAX_TIMER_CHECKPOINT: " + MAX_TIMER_CHECKPOINT); // check for collusion for (GameObject obj : objs.getObjects()) { for (GameObject collusionObj : objs.getObjects()) { if (obj == collusionObj) continue; CollusionDirections.CollusionDirectionsTypes col = obj.bounds.intersection(collusionObj.bounds); if (col != CollusionDirections.CollusionDirectionsTypes.NONE) { obj.isCollusion(collusionObj, col); } } } }
public void draw(SpriteBatch batch) { level.render(); for (GameObject obj : objs.getObjects()) { obj.draw(batch); } }