/*
* JavaXYQ Engine
*
* javaxyq@2008 all rights.
* http://www.javaxyq.com
*/
package com.javaxyq.trigger;
import java.awt.Point;
import java.awt.Rectangle;
import com.javaxyq.core.ApplicationHelper;
import com.javaxyq.core.SpriteFactory;
import com.javaxyq.data.SceneTeleporter;
import com.javaxyq.widget.Player;
import com.javaxyq.widget.Sprite;
import com.javaxyq.widget.Widget;
/**
* ������ת������
*
* @author ����ΰ
* @history 2008-5-31 ����ΰ �½�
* @history 2010-4-21 gongdewei ��ʹ��SceneTeleporterʵ����
*/
public class JumpTrigger implements Trigger {
private SceneTeleporter teleporter;
private boolean enable;
private Rectangle bounds;
private Sprite s;
private Point startPoint;
private Point endPoint;
public JumpTrigger(SceneTeleporter teleporter) {
super();
this.teleporter = teleporter;
startPoint = parsePoint(teleporter.getStartPoint());
endPoint = parsePoint(teleporter.getEndPoint());
this.bounds = new Rectangle(startPoint.x-2, startPoint.y-2, 4, 4);
}
public Rectangle getBounds() {
return this.bounds;
}
public boolean isEnable() {
return enable;
}
public void setEnable(boolean b) {
this.enable = b;
}
public void doAction() {
String sceneId = String.valueOf(this.teleporter.getEndId());
Player player = ApplicationHelper.getApplication().getContext().getPlayer();
ApplicationHelper.getApplication().doAction(player, "com.javaxyq.action.transport", new Object[] { sceneId, endPoint.x, endPoint.y });
}
public void dispose() {
this.teleporter = null;
this.bounds = null;
this.startPoint = null;
this.endPoint = null;
}
public boolean hit(Point p) {
return this.bounds.contains(p);
}
public Widget getWidget() {
return null;
}
public Sprite getSprite() {
if (s == null) {
s = SpriteFactory.loadSprite("/magic/jump.tcp");
}
return s;
}
public Point getLocation() {
return new Point(this.bounds.x, this.bounds.y);
}
private static Point parsePoint(String str) {
String[] strs = str.split("[ ,]");
return new Point(Integer.parseInt(strs[0]), Integer.parseInt(strs[1]));
}
}