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