diff options
Diffstat (limited to 'core/src/ch/asynk/tankontank/game')
| -rw-r--r-- | core/src/ch/asynk/tankontank/game/hud/Widget.java | 42 | 
1 files changed, 36 insertions, 6 deletions
| diff --git a/core/src/ch/asynk/tankontank/game/hud/Widget.java b/core/src/ch/asynk/tankontank/game/hud/Widget.java index d277cd0..08d90f5 100644 --- a/core/src/ch/asynk/tankontank/game/hud/Widget.java +++ b/core/src/ch/asynk/tankontank/game/hud/Widget.java @@ -10,13 +10,17 @@ public abstract class Widget implements Disposable, Drawable  {      public boolean blocked;      public boolean visible; +    protected float padding;      protected Rectangle rect;      protected Position position; +    protected Widget parent;      protected Widget()      { +        this.parent = null;          this.blocked = false;          this.visible = true; +        this.padding = 0f;          this.rect = new Rectangle(0, 0, 0, 0);          this.position = Position.MIDDLE_CENTER;      } @@ -26,15 +30,22 @@ public abstract class Widget implements Disposable, Drawable      public float getWidth() { return rect.width; }      public float getHeight() { return rect.height; } +    public void translate(float dx, float dy) +    { +        rect.x += dx; +        rect.y += dy; +    } + +    public void setPosition(Rectangle r) +    { +        rect.set(r); +    } +      public void setPosition(float x, float y)      {          rect.x = x;          rect.y = y;      } -    public void setPosition(Rectangle base) -    { -        rect.set(base); -    }      public void setPosition(float x, float y, float w, float h)      { @@ -44,8 +55,27 @@ public abstract class Widget implements Disposable, Drawable      public void setPosition(Position position)      {          this.position = position; -        rect.x = position.getX(rect.width); -        rect.y = position.getY(rect.height); +        setParent(this.parent); +    } + +    public void setPosition(Position position, Widget parent) +    { +        this.position = position; +        setParent(parent); +    } + +    public void setParent(Widget parent) +    { +        this.parent = parent; +        if (parent == null) { +            rect.x = position.getX(rect.width); +            rect.y = position.getY(rect.height); +        } else { +            rect.x = position.getX(parent, rect.width); +            rect.y = position.getY(parent, rect.height); +        } +        // might trigger something if overriden +        setPosition(rect.x, rect.y);      }      public boolean hit(float x, float y) | 
