/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.petah.spring.bai;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.petah.common.commandline.Argument;
import org.petah.common.commandline.ArgumentList;
import org.petah.common.commandline.ArgumentParser;
import org.petah.spring.bai.cache.CachedMap;
import org.petah.spring.bai.cache.CachedUnitDef;
import org.petah.spring.bai.delegate.AIDelegate;
import org.petah.spring.bai.listener.MessageEventListener;
/**
*
* @author Petah
*/
public class LocalCommandHandler implements MessageEventListener {
private AIDelegate aiDelegate;
private ArgumentList argumentList;
public LocalCommandHandler(AIDelegate aiDelegate) {
this.aiDelegate = aiDelegate;
// aiDelegate.getAIEventHandler().addMessageEventListener(this);
}
private boolean checkArgument(String argument) {
if (argumentList.hasArgument(argument)) {
if (argumentList.hasValue(argument)) {
try {
int i = Integer.parseInt(argumentList.getValue(argument));
if (i == aiDelegate.getTeamID()) {
return true;
}
} catch (NumberFormatException ex) {
aiDelegate.sendMessage(argument + " expects team ID, argument is invalid.");
}
} else {
aiDelegate.sendMessage(argument + " expects team ID.");
}
}
return false;
}
public void message(Integer player, String message) {
if (message.startsWith(ArgumentParser.getArgumentPrefix())) {
GlobalCommandHandler.processCommand(aiDelegate, player, message);
processCommand(message);
}
}
private void processCommand(String message) {
argumentList = ArgumentParser.parse(message.split(" "));
if (GlobalOptions.isDebug()) {
Logger.getLogger(LocalCommandHandler.class.getName()).info("AI processed '" + message + "'");
Logger.getLogger(LocalCommandHandler.class.getName()).info("Commands: ");
for (Argument a : argumentList) {
Logger.getLogger(LocalCommandHandler.class.getName()).info(a.toString());
}
}
if (checkArgument("-cheat")) {
aiDelegate.sendMessage("Enabling Cheats");
aiDelegate.getCallback().getCheats().setEnabled(true);
}
if (checkArgument("-res")) {
aiDelegate.sendMessage("Metal: " + aiDelegate.getResourceManager().getMetalCurrent() +
"/" + aiDelegate.getResourceManager().getMetalStorage() +
" +" + aiDelegate.getResourceManager().getMetalIncome() +
" -" + aiDelegate.getResourceManager().getMetalUsage());
aiDelegate.sendMessage("Energy: " + aiDelegate.getResourceManager().getEnergyCurrent() +
"/" + aiDelegate.getResourceManager().getEnergyStorage() +
" +" + aiDelegate.getResourceManager().getEnergyIncome() +
" -" + aiDelegate.getResourceManager().getEnergyUsage());
}
}
}