summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/gdx/boardgame/Overlays.java
blob: 5746630b24d3999b3aea8b662ede7a8a17908e49 (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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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);
            }
        }
    }

    @Override public void drawDebug(ShapeRenderer shapeRenderer)
    {
        if (!isEnabled) return;
        for (int i = 0, n = sprites.size; i < n; i++) {
            if (enabled[i]) {
                final Sprite sprite = sprites.get(i);
                float w = sprite.getWidth();
                float h = sprite.getHeight();
                shapeRenderer.rect(sprite.getX(), sprite.getY(), (w / 2f), (h / 2f), w, h, sprite.getScaleX(), sprite.getScaleY(), sprite.getRotation());
                return;
            }
        }
    }
}