summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/gdx/boardgame/Overlays.java
blob: b1cdba3d9b8fc97515e8257575a8a1f0d02b93ed (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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package ch.asynk.gdx.boardgame;

import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.utils.Array;

import ch.asynk.gdx.boardgame.Drawable;
import ch.asynk.gdx.boardgame.Positionable;
import ch.asynk.gdx.boardgame.Rotable;
import ch.asynk.gdx.boardgame.Scalable;

public class Overlays implements Drawable, Positionable, Rotable, Scalable
{
    private boolean isEnabled;
    private boolean enabled[];
    private Array<Sprite> sprites;

    public Overlays(TextureAtlas atlas)
    {
        this.sprites = atlas.createSprites();
        this.enabled = new boolean[sprites.size];
        this.isEnabled = false;
    }

    public void disableAll()
    {
        for (int i = 0; i < sprites.size; i++)
            enabled[i] = false;
        isEnabled = false;
    }

    public void enable(int i, boolean enable)
    {
        enabled[i] = enable;
        for (int j = 0; j < sprites.size; j++) {
            if (enabled[j]) {
                isEnabled = true;
                return;
            }
        }
        isEnabled = false;
    }

    public boolean isEnabled(int i)
    {
        return enabled[i];
    }

    public boolean isEnabled()
    {
        return isEnabled;
    }

    @Override public float getX() { return sprites.get(0).getX(); }
    @Override public float getY() { return sprites.get(0).getY(); }
    @Override public float getWidth() { return sprites.get(0).getWidth(); }
    @Override public float getHeight() { return sprites.get(0).getHeight(); }

    @Override public void translate(float dx, float dy)
    {
        for (Sprite sprite : sprites) {
            sprite.translate(dx, dy);
        }
    }

    @Override public void centerOn(float cx, float cy)
    {
        for (Sprite sprite : sprites) {
            sprite.setPosition(
                    (cx - (sprite.getWidth() / 2f)),
                    (cy - (sprite.getHeight() / 2f)));
        }
    }

    @Override public void setPosition(float x, float y)
    {
        for (Sprite sprite : sprites) {
            sprite.setPosition(x, y);
        }
    }

    @Override public float getRotation()
    {
        return sprites.get(0).getRotation();
    }

    @Override public void setRotation(float rotation)
    {
        for (Sprite sprite : sprites) {
            sprite.setRotation(rotation);
        }
    }

    @Override public float getScale()
    {
        return sprites.get(0).getScaleX();
    }

    @Override public void setScale(float scale)
    {
        for (Sprite sprite : sprites) {
            sprite.setScale(scale);
        }
    }

    @Override public void setAlpha(float alpha)
    {
        for (Sprite sprite : sprites) {
            sprite.setAlpha(alpha);
        }
    }

    @Override public void draw(Batch batch)
    {
        if (!isEnabled) return;
        for (int i = 0, n = sprites.size; i < n; i++) {
            if (enabled[i]) {
                sprites.get(i).draw(batch);
            }
        }
    }
}