From 8d37753259a6ec30661f2504bf03d709797d7469 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Sat, 19 Dec 2020 20:06:31 +0100 Subject: [PATCH] AnimatedSprite added --- core/src/com/trs/main/AnimatedSprite.java | 121 ++++++++++++++++++++++ core/src/com/trs/main/Main.java | 4 - core/src/com/trs/main/Player.java | 6 +- 3 files changed, 126 insertions(+), 5 deletions(-) create mode 100644 core/src/com/trs/main/AnimatedSprite.java diff --git a/core/src/com/trs/main/AnimatedSprite.java b/core/src/com/trs/main/AnimatedSprite.java new file mode 100644 index 0000000..a085c61 --- /dev/null +++ b/core/src/com/trs/main/AnimatedSprite.java @@ -0,0 +1,121 @@ +package com.trs.main; + +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.graphics.g2d.Sprite; +import com.badlogic.gdx.graphics.g2d.TextureRegion; + +/** + * + * @author jonathan + */ + +public class AnimatedSprite { + private Sprite sprite; + private TextureRegion[][] texture; + private int frame; + private int row; + private float delta; + + public AnimatedSprite(Texture tx, int tileWidth, int tileHeight){ + texture = TextureRegion.split(tx, tileWidth, tileHeight); + + row = (int) (Math.random()*texture.length); + frame = (int) (Math.random()*texture[row].length); + + sprite = new Sprite(texture[getRow()][getFrame()]); + } + + public void updateAnimation(float delta){ + this.delta += delta; + + if(this.delta >= 0.2f) { + this.delta = 0; + if(getFrame() >= texture[getRow()].length - 1){ + setFrame(0); + } + else{ + setFrame(getFrame() + 1); + } + + sprite.setRegion(texture[getRow()][getFrame()]); + } + } + + /* + public void updateBackwards(){ + if(getFrame() <= 0){ + setFrame(texture[0].length - 1); + } + else{ + setFrame(getFrame() - 1); + } + + sprite.setRegion(texture[getRow()][getFrame()]); + } + */ + + public void draw(Batch batch) { + sprite.draw(batch); + } + + /** + * @return the sprite + */ + public Sprite getSprite() { + return sprite; + } + + /** + * @param sprite the sprite to set + */ + public void setSprite(Sprite sprite) { + this.sprite = sprite; + } + + public void setSpritePosition(int xPos, int yPos){ + sprite.setPosition(xPos, yPos); + } + + /** + * @return the texture + */ + public TextureRegion[][] getTexture() { + return texture; + } + + /** + * @param texture the texture to set + */ + public void setTexture(TextureRegion[][] texture) { + this.texture = texture; + } + + /** + * @return the frame + */ + public int getFrame() { + return frame; + } + + /** + * @param frame the frame to set + */ + public void setFrame(int frame) { + this.frame = frame; + } + + /** + * @return the row + */ + public int getRow() { + return row; + } + + /** + * @param row the row to set + */ + public void setRow(int row) { + this.row = row; + } +} diff --git a/core/src/com/trs/main/Main.java b/core/src/com/trs/main/Main.java index 7b3654d..ecb9320 100644 --- a/core/src/com/trs/main/Main.java +++ b/core/src/com/trs/main/Main.java @@ -2,11 +2,7 @@ package com.trs.main; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.GL20; -import com.badlogic.gdx.graphics.glutils.ShapeRenderer; -import com.badlogic.gdx.math.Rectangle; -import com.badlogic.gdx.math.Vector2; import com.trs.main.view.screens.GameScreen; public class Main extends Game{ diff --git a/core/src/com/trs/main/Player.java b/core/src/com/trs/main/Player.java index 0a8ddad..921a74e 100644 --- a/core/src/com/trs/main/Player.java +++ b/core/src/com/trs/main/Player.java @@ -21,10 +21,12 @@ import com.badlogic.gdx.scenes.scene2d.Actor; public class Player extends Actor{ Texture t; + private AnimatedSprite playerSprite; public Player(int xPos, int yPos){ t = new Texture(Gdx.files.internal("badlogic.jpg")); setBounds(xPos, yPos, t.getWidth(), t.getHeight()); + playerSprite = new AnimatedSprite(t, 64, 64); } @Override @@ -48,12 +50,14 @@ public class Player extends Actor{ if(Gdx.input.isKeyPressed(Input.Keys.S)){ setY(getY()-10); } + + playerSprite.updateAnimation(delta); super.act(delta); //To change body of generated methods, choose Tools | Templates. } @Override public void draw(Batch batch, float parentAlpha) { - batch.draw(t, getX(), getY()); + playerSprite.draw(batch); super.draw(batch, parentAlpha); //To change body of generated methods, choose Tools | Templates. }