parent
2fbebd4fbc
commit
de34b66fde
@ -0,0 +1,42 @@ |
||||
package mightypork.gamecore.control.bus.clients; |
||||
|
||||
|
||||
import java.util.Collection; |
||||
|
||||
import mightypork.gamecore.control.bus.EventBus; |
||||
|
||||
|
||||
/** |
||||
* Common methods for client hubs (ie delegating vlient implementations) |
||||
* |
||||
* @author MightyPork |
||||
*/ |
||||
public interface ClientHub extends DelegatingClient, ToggleableClient { |
||||
|
||||
@Override |
||||
public boolean doesDelegate(); |
||||
|
||||
|
||||
@Override |
||||
public Collection<Object> getChildClients(); |
||||
|
||||
|
||||
@Override |
||||
public boolean isListening(); |
||||
|
||||
|
||||
/** |
||||
* Add a child subscriber to the {@link EventBus}.<br> |
||||
* |
||||
* @param client |
||||
*/ |
||||
public void addChildClient(Object client); |
||||
|
||||
|
||||
/** |
||||
* Remove a child subscriber |
||||
* |
||||
* @param client subscriber to remove |
||||
*/ |
||||
void removeChildClient(Object client); |
||||
} |
@ -0,0 +1,25 @@ |
||||
package mightypork.gamecore.control.interf; |
||||
|
||||
|
||||
/** |
||||
* Can be enabled or disabled.<br> |
||||
* Implementations should take appropriate action (ie. stop listening to events, |
||||
* updating etc.) |
||||
* |
||||
* @author MightyPork |
||||
*/ |
||||
public interface Enableable { |
||||
|
||||
/** |
||||
* Change enabled state |
||||
* |
||||
* @param yes enabled |
||||
*/ |
||||
public void enable(boolean yes); |
||||
|
||||
|
||||
/** |
||||
* @return true if enabled |
||||
*/ |
||||
public boolean isEnabled(); |
||||
} |
@ -0,0 +1,15 @@ |
||||
package mightypork.gamecore.gui; |
||||
|
||||
|
||||
/** |
||||
* Element that can be hidden or visible |
||||
* |
||||
* @author MightyPork |
||||
*/ |
||||
public interface Hideable { |
||||
|
||||
void setVisible(boolean yes); |
||||
|
||||
|
||||
boolean isVisible(); |
||||
} |
@ -1,33 +0,0 @@ |
||||
package mightypork.gamecore.gui.components; |
||||
|
||||
|
||||
import mightypork.gamecore.control.AppAccess; |
||||
import mightypork.gamecore.control.AppSubModule; |
||||
import mightypork.utils.math.constraints.RectBound; |
||||
import mightypork.utils.math.constraints.rect.Rect; |
||||
|
||||
|
||||
public abstract class AbstractComponent extends AppSubModule implements PluggableRenderable { |
||||
|
||||
private RectBound context; |
||||
|
||||
|
||||
public AbstractComponent(AppAccess app) { |
||||
super(app); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void setRect(RectBound context) |
||||
{ |
||||
this.context = context; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public Rect getRect() |
||||
{ |
||||
return context.getRect(); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,163 @@ |
||||
package mightypork.gamecore.gui.components; |
||||
|
||||
|
||||
import java.util.Collection; |
||||
|
||||
import mightypork.gamecore.audio.SoundSystem; |
||||
import mightypork.gamecore.control.AppAccess; |
||||
import mightypork.gamecore.control.AppSubModule; |
||||
import mightypork.gamecore.control.bus.EventBus; |
||||
import mightypork.gamecore.control.bus.clients.ClientHub; |
||||
import mightypork.gamecore.input.InputSystem; |
||||
import mightypork.gamecore.render.DisplaySystem; |
||||
import mightypork.utils.annotations.DefaultImpl; |
||||
import mightypork.utils.math.constraints.RectBound; |
||||
import mightypork.utils.math.constraints.rect.Rect; |
||||
|
||||
|
||||
public abstract class BusEnabledPainter extends SimplePainter implements ClientHub, Component, AppAccess { |
||||
|
||||
private RectBound context; |
||||
private boolean enabled; |
||||
private boolean visible = true; |
||||
|
||||
private final AppSubModule subModule; |
||||
|
||||
|
||||
public BusEnabledPainter(AppAccess app) { |
||||
this.subModule = new AppSubModule(app); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void setRect(RectBound context) |
||||
{ |
||||
this.context = context; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public Rect getRect() |
||||
{ |
||||
return context.getRect(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public EventBus getEventBus() |
||||
{ |
||||
return subModule.getEventBus(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public Collection<Object> getChildClients() |
||||
{ |
||||
return subModule.getChildClients(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public boolean doesDelegate() |
||||
{ |
||||
return subModule.doesDelegate(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public boolean isListening() |
||||
{ |
||||
return subModule.isListening(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public SoundSystem getSoundSystem() |
||||
{ |
||||
return subModule.getSoundSystem(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public InputSystem getInput() |
||||
{ |
||||
return subModule.getInput(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public DisplaySystem getDisplay() |
||||
{ |
||||
return subModule.getDisplay(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void shutdown() |
||||
{ |
||||
subModule.shutdown(); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void addChildClient(Object client) |
||||
{ |
||||
subModule.addChildClient(client); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void removeChildClient(Object client) |
||||
{ |
||||
subModule.removeChildClient(client); |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void enable(boolean yes) |
||||
{ |
||||
subModule.setDelegating(yes); |
||||
subModule.setListening(yes); |
||||
enabled = yes; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public boolean isEnabled() |
||||
{ |
||||
return enabled; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void setVisible(boolean visible) |
||||
{ |
||||
this.visible = visible; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public boolean isVisible() |
||||
{ |
||||
return visible; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public final void render() |
||||
{ |
||||
if (!visible) return; |
||||
paint(); |
||||
} |
||||
|
||||
|
||||
protected abstract void paint(); |
||||
|
||||
|
||||
@Override |
||||
@DefaultImpl |
||||
public void update(double delta) |
||||
{ |
||||
} |
||||
|
||||
} |
@ -0,0 +1,60 @@ |
||||
package mightypork.gamecore.gui.components; |
||||
|
||||
|
||||
import mightypork.gamecore.control.bus.clients.ToggleableClient; |
||||
import mightypork.gamecore.control.interf.Enableable; |
||||
import mightypork.gamecore.control.timing.Updateable; |
||||
import mightypork.gamecore.gui.Hideable; |
||||
import mightypork.utils.math.constraints.RectBound; |
||||
import mightypork.utils.math.constraints.rect.Rect; |
||||
|
||||
|
||||
/** |
||||
* UI component interface
|
||||
* |
||||
* @author MightyPork |
||||
*/ |
||||
public interface Component extends Hideable, PluggableRenderable, Updateable, Enableable, ToggleableClient { |
||||
|
||||
/** |
||||
* Enable the component. This includes listening to event bus, and any |
||||
* event-related actions. |
||||
*/ |
||||
@Override |
||||
void enable(boolean yes); |
||||
|
||||
|
||||
@Override |
||||
boolean isEnabled(); |
||||
|
||||
|
||||
/** |
||||
* Set visible. When not visible, the component should not render. |
||||
*/ |
||||
@Override |
||||
void setVisible(boolean yes); |
||||
|
||||
|
||||
@Override |
||||
boolean isVisible(); |
||||
|
||||
|
||||
@Override |
||||
Rect getRect(); |
||||
|
||||
|
||||
@Override |
||||
void setRect(RectBound rect); |
||||
|
||||
|
||||
@Override |
||||
void render(); |
||||
|
||||
|
||||
@Override |
||||
void update(double delta); |
||||
|
||||
|
||||
@Override |
||||
public boolean isListening(); |
||||
} |
@ -0,0 +1,44 @@ |
||||
package mightypork.test; |
||||
|
||||
|
||||
import mightypork.utils.math.constraints.num.Num; |
||||
import mightypork.utils.math.constraints.num.NumVar; |
||||
import mightypork.utils.math.constraints.rect.Rect; |
||||
|
||||
|
||||
public class TestTiled { |
||||
|
||||
public static void main(String[] args) |
||||
{ |
||||
// {
|
||||
// RectVar area = Rect.makeVar(0, 0, 100, 100);
|
||||
//
|
||||
// TiledRect tiled = area.tiles(5, 5).oneBased();
|
||||
//
|
||||
// System.out.println(tiled.span(1, 1, 1, 1));
|
||||
// System.out.println(tiled.span(1, 1, 3, 1));
|
||||
// }
|
||||
|
||||
// {
|
||||
// RectVar area = Rect.makeVar(0, 0, 100, 100);
|
||||
// TiledRect tiled = area.columns(4);
|
||||
//
|
||||
// System.out.println(tiled.column(2));
|
||||
//
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
{ |
||||
Rect abox; |
||||
final Rect b = Rect.make(100, 100, 100, 10); |
||||
final NumVar pos = Num.makeVar(1); |
||||
|
||||
abox = b.leftEdge().growRight(b.height()); |
||||
abox = abox.move(b.width().sub(b.height()).mul(pos), Num.ZERO); |
||||
//abox = abox.shrink(b.height().perc(10));
|
||||
|
||||
System.out.println(abox); |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue