summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/gdx/boardgame/FramedSprite.java
blob: b09a3afda4ceb6b8ec7d8ab9e5b674de5d4e7098 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package ch.asynk.gdx.boardgame;

import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;

public class FramedSprite implements Drawable, Positionable
{
    private TextureRegion[][] frames;
    private TextureRegion frame;
    public final int rows;
    public final int cols;
    public float x;
    public float y;
    public float a;

    public FramedSprite(Texture texture, int rows, int cols)
    {
        this.frames = TextureRegion.split(texture, (texture.getWidth() / cols), (texture.getHeight() / rows));
        this.frame = frames[0][0];
        this.rows = rows;
        this.cols = cols;
        this.x = 0;
        this.y = 0;
        this.a = 0;
    }

    public FramedSprite(FramedSprite other)
    {
        this.frames = other.frames;
        this.frame = other.frame;
        this.rows = other.rows;
        this.cols = other.cols;
        this.x = other.x;
        this.y = other.y;
        this.a = other.a;
    }

    public void setFrame(int row, int col)
    {
        this.frame = frames[row][col];
    }

    public TextureRegion getFrame()
    {
        return frame;
    }

    @Override public float getX()
    {
        return x;
    }

    @Override public float getY()
    {
        return y;
    }

    @Override public float getWidth()
    {
        return frame.getRegionWidth();
    }

    @Override public float getHeight()
    {
        return frame.getRegionHeight();
    }

    @Override public void translate(float dx, float dy)
    {
        setPosition(getX() + dx, getY() + dy);
    }

    @Override public void setPosition(float x, float y)
    {
        this.x = x;
        this.y = y;
    }

    @Override public void draw(Batch batch)
    {
        batch.draw(frame, x, y, 0, 0, frame.getRegionWidth(), frame.getRegionHeight(), 1f, 1f, a);
    }
}