/*
* JavaXYQ Source Code
* Cheat Cheat.groovy
* by kylixs 2009-10
* All Rights Reserved.
* Please see also http://javaxyq.cn or http://javaxyq.googlecode.com.
* Please email to javaxyq@qq.com.
*/
package com.javaxyq.util;
import java.awt.Point;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import com.javaxyq.core.ApplicationHelper;
import com.javaxyq.core.GameCanvas;
import com.javaxyq.core.GameMain;
import com.javaxyq.core.SceneCanvas;
import com.javaxyq.model.PlayerVO;
import com.javaxyq.widget.Player;
/**
* @author dewitt
*
*/
public class Cheat {
public static boolean process(String cmdLine) {
if(!cmdLine.startsWith("$$ ")) {
return false;
}
String[] args = cmdLine.substring(3).split(" ");
if(args.length < 3) {
return false;
}
System.out.println("cheat: "+cmdLine);
try {
String cmd = args[1];
Player player = ApplicationHelper.getApplication().getContext().getPlayer();
PlayerVO playerdata = player.getData();
Map<String, Object> data = BeanUtils.describe(playerdata);
Map<String, Object> newdata = new HashMap<String, Object>();
if(cmd.equals("=")) {
Object value = args[2];
if(args[0].equals("xy")) {
args[0]="sceneLocation";
}
if(args[0].equals("sceneLocation")) {
value = parsePoint(args[2]);
}
newdata.put(args[0], value);
}else if(cmd.equals("+")) {
int value = (Integer) data.get(args[0]);
value += Integer.parseInt(args[2]);
newdata.put(args[0], value);
}else if(cmd.equals("-")) {
int value = (Integer) data.get(args[0]);
value -= Integer.parseInt(args[2]);
newdata.put(args[0], value);
}
BeanUtils.populate(playerdata, newdata);
player.setData(playerdata);
SceneCanvas canvas = (SceneCanvas) ApplicationHelper.getApplication().getCanvas();
canvas.setPlayerSceneLocation(playerdata.getSceneLocation());
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
private static Point parsePoint(String str) {
String[] xy = str.split(",");
Point p = new Point(Integer.parseInt(xy[0]), Integer.parseInt(xy[1]));
return p;
}
}