parent
086a630fb9
commit
7ee201a6f7
@ -0,0 +1,92 @@ |
|||||||
|
package mightypork.gamecore.gui.components; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.control.bus.events.LayoutChangeEvent; |
||||||
|
import mightypork.utils.annotations.DefaultImpl; |
||||||
|
import mightypork.utils.math.constraints.rect.Rect; |
||||||
|
import mightypork.utils.math.constraints.rect.caching.AbstractRectCache; |
||||||
|
import mightypork.utils.math.constraints.rect.proxy.RectBound; |
||||||
|
import mightypork.utils.math.constraints.rect.proxy.RectBoundAdapter; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* {@link Renderable} with pluggable context |
||||||
|
* |
||||||
|
* @author MightyPork |
||||||
|
*/ |
||||||
|
public abstract class AbstractVisualComponent extends AbstractRectCache implements Component, LayoutChangeEvent.Listener { |
||||||
|
|
||||||
|
private Rect source; |
||||||
|
private boolean visible = true; |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public final Rect getRect() |
||||||
|
{ |
||||||
|
return super.getRect(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public final void setRect(RectBound rect) |
||||||
|
{ |
||||||
|
this.source = new RectBoundAdapter(rect); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public final boolean isVisible() |
||||||
|
{ |
||||||
|
return visible; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public final void setVisible(boolean visible) |
||||||
|
{ |
||||||
|
this.visible = visible; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public final Rect getCacheSource() |
||||||
|
{ |
||||||
|
return source; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public final void render() |
||||||
|
{ |
||||||
|
if (!visible) return; |
||||||
|
|
||||||
|
renderComponent(); |
||||||
|
}; |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public final void onLayoutChanged() |
||||||
|
{ |
||||||
|
poll(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public final void onChange() |
||||||
|
{ |
||||||
|
updateLayout(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Draw the component (it's visible) |
||||||
|
*/ |
||||||
|
public abstract void renderComponent(); |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
@DefaultImpl |
||||||
|
public void updateLayout() |
||||||
|
{ |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package mightypork.gamecore.gui.components; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.control.bus.clients.ToggleableClient; |
||||||
|
import mightypork.gamecore.control.interf.Enableable; |
||||||
|
import mightypork.gamecore.gui.ActionTrigger; |
||||||
|
|
||||||
|
|
||||||
|
public interface InputComponent extends Component, Enableable, ActionTrigger, ToggleableClient { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
package mightypork.gamecore.gui.components; |
||||||
|
|
||||||
|
import mightypork.gamecore.control.bus.clients.ClientHub; |
||||||
|
import mightypork.gamecore.control.interf.Enableable; |
||||||
|
|
||||||
|
|
||||||
|
public interface LayoutComponent extends Component, Enableable, ClientHub { |
||||||
|
|
||||||
|
} |
@ -1,55 +0,0 @@ |
|||||||
package mightypork.gamecore.gui.components; |
|
||||||
|
|
||||||
|
|
||||||
import mightypork.utils.annotations.DefaultImpl; |
|
||||||
import mightypork.utils.math.constraints.rect.*; |
|
||||||
import mightypork.utils.math.constraints.rect.caching.AbstractRectCache; |
|
||||||
import mightypork.utils.math.constraints.rect.caching.RectCache; |
|
||||||
import mightypork.utils.math.constraints.rect.proxy.RectBound; |
|
||||||
import mightypork.utils.math.constraints.rect.proxy.RectBoundAdapter; |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* {@link Renderable} with pluggable context |
|
||||||
* |
|
||||||
* @author MightyPork |
|
||||||
*/ |
|
||||||
public abstract class SimplePainter extends AbstractRectCache implements PluggableRenderable { |
|
||||||
|
|
||||||
private RectCache source; |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
public Rect getRect() |
|
||||||
{ |
|
||||||
return super.getRect(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
public void setRect(RectBound rect) |
|
||||||
{ |
|
||||||
this.source = new RectBoundAdapter(rect).cached(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
public Rect getCacheSource() |
|
||||||
{ |
|
||||||
return source; |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
public abstract void render(); |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Called after constraint was changed; contained constraints can now poll too. |
|
||||||
*/ |
|
||||||
@Override |
|
||||||
@DefaultImpl |
|
||||||
public void onChange() |
|
||||||
{ |
|
||||||
} |
|
||||||
} |
|
@ -1,75 +0,0 @@ |
|||||||
package mightypork.gamecore.gui.components.layout; |
|
||||||
|
|
||||||
|
|
||||||
import java.util.LinkedList; |
|
||||||
|
|
||||||
import mightypork.gamecore.control.AppAccess; |
|
||||||
import mightypork.gamecore.control.bus.EventBus; |
|
||||||
import mightypork.gamecore.gui.components.BusEnabledPainter; |
|
||||||
import mightypork.gamecore.gui.components.PluggableRenderable; |
|
||||||
import mightypork.gamecore.gui.components.Renderable; |
|
||||||
import mightypork.gamecore.gui.components.SimplePainter; |
|
||||||
import mightypork.utils.math.constraints.rect.proxy.RectBound; |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Bag for {@link SimplePainter} elements with constraints.<br> |
|
||||||
* Elements are exposed to {@link EventBus}. |
|
||||||
* |
|
||||||
* @author MightyPork |
|
||||||
*/ |
|
||||||
public abstract class AbstractLayout extends BusEnabledPainter { |
|
||||||
|
|
||||||
final LinkedList<PluggableRenderable> elements = new LinkedList<>(); |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* @param app app access |
|
||||||
*/ |
|
||||||
public AbstractLayout(AppAccess app) { |
|
||||||
super(app); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* @param app app access |
|
||||||
* @param context boudning context |
|
||||||
*/ |
|
||||||
public AbstractLayout(AppAccess app, RectBound context) { |
|
||||||
super(app); |
|
||||||
setRect(context); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Add element to the holder, setting it's context.<br> |
|
||||||
* Element must then be attached using the <code>attach</code> method. |
|
||||||
* |
|
||||||
* @param elem element |
|
||||||
*/ |
|
||||||
public abstract void add(PluggableRenderable elem); |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Connect to bus and add to element list |
|
||||||
* |
|
||||||
* @param elem element; it's context will be set to the constraint. |
|
||||||
*/ |
|
||||||
public void attach(PluggableRenderable elem) |
|
||||||
{ |
|
||||||
if (elem == null) return; |
|
||||||
|
|
||||||
elements.add(elem); |
|
||||||
addChildClient(elem); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
@Override |
|
||||||
public void paint() |
|
||||||
{ |
|
||||||
for (final Renderable element : elements) { |
|
||||||
element.render(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
Loading…
Reference in new issue