package testing;
import java.io.IOException;
import java.util.Collection;
import org.newdawn.slick.Input;
import framework.collision.CollisionComponent.CollisionEvent;
import framework.component.Component;
import framework.component.ComponentSystem;
import framework.event.Event;
import framework.event.EventListener;
import framework.event.EventSystem;
import framework.io.CustomInputStream;
import framework.rendering.SpriteComponent;
import framework.userinput.MouseListenerSystem.MousePressedEvent;
public class ColourChangeComponent extends Component implements EventListener{
public ColourChangeComponent() {
super();
EventSystem.getInstance().registerEventListener(this, "Collision", null);
EventSystem.getInstance().registerEventListener(this, "CollisionStopped", null);
EventSystem.getInstance().registerEventListener(this, "MousePressed", null);
EventSystem.getInstance().registerEventListener(this, "MouseReleased", null);
}
public ColourChangeComponent(CustomInputStream in, int baseID,
byte versionNum) throws IOException {
super(in, baseID, versionNum);
// TODO Auto-generated constructor stub
}
@Override
public boolean allowSameTypedSiblings() {
return false;
}
@Override
protected byte getDataFormatVersion() {
return 0;
}
@Override
public void onEvent(Event e) {
if(e != null){
if(e.getType().equals("Collision")){
CollisionEvent collis = (CollisionEvent) e;
SpriteComponent sprite = (SpriteComponent) collis.getCollidedWith().getSiblingByType(SpriteComponent.class.getName());
if(sprite != null){
sprite.setImageFilename("res/img/red_dot.png", true);
}
}else if(e.getType().equals("CollisionStopped")){
CollisionEvent collis = (CollisionEvent) e;
SpriteComponent sprite = (SpriteComponent) collis.getCollidedWith().getSiblingByType(SpriteComponent.class.getName());
if(sprite != null){
sprite.setImageFilename("res/img/dot.png", true);
}
}else if(e.getType().equals("MousePressed")){
Collection<Component> comps = ComponentSystem.getInstance().getAllComponents().getComponentsOfType(SpriteComponent.class.getName()).getAllComponents();
String filename = ((MousePressedEvent) e).getButton() == Input.MOUSE_LEFT_BUTTON ? "res/img/square.png" : "res/img/line.png";
for(Component c:comps){
((SpriteComponent) c).setImageFilename(filename);
}
}else if(e.getType().equals("MouseReleased")){
Collection<Component> dots = ComponentSystem.getInstance().getComponentsOfType(Dot.class.getName());
for(Component dot:dots){
SpriteComponent s = (SpriteComponent) dot.getSiblingByType(SpriteComponent.class.getName());
if(s != null){
s.setImageFilename("res/img/dot.png");
s.scaleToMatchTexture();
}
}
}
}
}
}