package com.javaxyq.event;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.List;
import com.javaxyq.core.ApplicationHelper;
import com.javaxyq.core.GameCanvas;
import com.javaxyq.core.SceneCanvas;
import com.javaxyq.widget.Player;
public class CanvasMouseHandler implements MouseListener, MouseMotionListener {
public void mouseClicked(MouseEvent e) {
GameCanvas _canvas = ApplicationHelper.getApplication().getContext().getWindow().getCanvas();
if (_canvas instanceof SceneCanvas) {
SceneCanvas canvas = (SceneCanvas) _canvas;
Player player = ApplicationHelper.getApplication().getContext().getPlayer();
if (e.getButton() == MouseEvent.BUTTON1) {
Point p = e.getPoint();
//���player
if (canvas.isHover(player)) {
player.stop(false);
return;
}
//���npc
List<Player> npcs = canvas.getNpcs();
for(int i=0;i<npcs.size();i++){
Player npc = npcs.get(i);
if (canvas.isHover(npc)) {//TODO �ж�����Ƿ��ڶԻ�������
npc.fireEvent(new PlayerEvent(npc,PlayerEvent.TALK));
//FIXME �Ľ��¼��Ĵ���
//GameMain.doTalk(npc);
return;
}
}
//�����ͼ
canvas.click(e.getPoint());
canvas.requestFocus(true);
// search path
//canvas.walkToView(p.x, p.y);
//Asynchronized walk!
Point coords = canvas.viewToScene(p);
player.fireEvent(new PlayerEvent(player, PlayerEvent.WALK,coords));
} else if (e.getButton() == MouseEvent.BUTTON3) {
player.stop(false);
player.changeDirection(e.getPoint());
}
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseDragged(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
// TODO CanvasMouseHandler: mouseMoved
}
}