use of eidolons.game.battlecraft.logic.battle.arena.ArenaBattleMaster in project Eidolons by IDemiurge.
the class DebugMaster method executeDebugFunction.
public Object executeDebugFunction(DEBUG_FUNCTIONS func) {
executedFunctions.push(func.toString());
boolean transmitted = false;
if (game.isOnline()) {
if (func.transmitted) {
transmitted = true;
}
}
if (target != null) {
arg = target;
}
Unit infoObj = target instanceof Unit ? (Unit) target : null;
Ref ref = null;
if (infoObj == null) {
try {
infoObj = (Unit) getObj();
} catch (Exception e) {
}
}
if (infoObj == null) {
infoObj = game.getManager().getActiveObj();
}
if (game.getManager().getActiveObj() != null) {
ref = new Ref(game, game.getManager().getActiveObj().getId());
} else {
ref = new Ref(game);
}
ref.setDebug(true);
Coordinates coordinate = null;
String data = null;
DC_TYPE TYPE;
debugFunctionRunning = true;
try {
switch(func) {
case SET_GLOBAL_ILLUMINATION:
game.getVisionMaster().getIlluminationMaster().setGlobalIllumination(DialogMaster.inputInt("SET_GLOBAL_ILLUMINATION", game.getVisionMaster().getIlluminationMaster().getGlobalIllumination()));
break;
case SET_GLOBAL_CONCEALMENT:
game.getVisionMaster().getIlluminationMaster().setGlobalConcealment(DialogMaster.inputInt("SET_GLOBAL_CONCEALMENT", game.getVisionMaster().getIlluminationMaster().getGlobalConcealment()));
break;
case TEST_CLONE_STATE:
StateCloner.test();
break;
case TEST_LOAD_STATE:
StatesKeeper.testLoad();
return null;
case RUN_AUTO_TESTS:
AutoTestMaster.runTests();
break;
case AUTO_TEST_INPUT:
WaitMaster.receiveInput(WAIT_OPERATIONS.AUTO_TEST_INPUT, true);
break;
case SET_OPTION:
OptionsMaster.promptSetOption();
break;
case ADD_GROUP:
File groupFile = ListChooser.chooseFile(PathFinder.getUnitGroupPath());
if (groupFile == null) {
break;
}
if (arg instanceof DC_Cell) {
coordinate = arg.getCoordinates();
} else {
coordinate = getGame().getBattleFieldManager().pickCoordinate();
}
if (coordinate == null) {
break;
}
data = FileManager.readFile(groupFile);
UnitGroupMaster.setCurrentGroupHeight(MathMaster.getMaxY(data));
UnitGroupMaster.setCurrentGroupWidth(MathMaster.getMaxX(data));
UnitGroupMaster.setMirror(isAltMode());
// UnitGroupMaster.setFlip(null);
try {
DC_ObjInitializer.createUnits(game.getPlayer(isAltMode()), data, coordinate);
} catch (Exception e) {
main.system.ExceptionMaster.printStackTrace(e);
} finally {
UnitGroupMaster.setMirror(false);
}
break;
case TOGGLE_DUMMY:
game.setDummyMode(!game.isDummyMode());
TestMasterContent.setForceFree(game.isDummyMode());
break;
case TOGGLE_DUMMY_PLUS:
game.setDummyPlus(!game.isDummyPlus());
TestMasterContent.setForceFree(game.isDummyMode());
break;
case PRESET:
PresetMaster.handlePreset(isAltMode());
break;
case TOGGLE_DUNGEON_DEBUG:
{
mapDebugOn = !mapDebugOn;
break;
}
case HIDDEN_FUNCTION:
{
int i = DialogMaster.optionChoice(HIDDEN_DEBUG_FUNCTIONS.values(), "...");
if (i != -1) {
executeHiddenDebugFunction(HIDDEN_DEBUG_FUNCTIONS.values()[i]);
}
break;
}
case TOGGLE_AUTO_UNIT:
if (!infoObj.isOwnedBy(game.getPlayer(true))) {
infoObj.setOriginalOwner(game.getPlayer(true));
infoObj.setOwner(game.getPlayer(true));
} else {
infoObj.setAiControlled(!infoObj.isAiControlled());
}
WaitMaster.receiveInput(WAIT_OPERATIONS.ACTION_COMPLETE, true);
break;
case EDIT_AI:
break;
case SAVE:
Saver.save("test");
break;
case LOAD:
Loader.loadGame("test.xml");
break;
case PAUSE:
DC_Game.game.getLoop().setPaused(!DC_Game.game.getLoop().isPaused());
break;
case TOGGLE_OMNIVISION:
omnivision = !omnivision;
break;
case AUTO_COMBAT:
game.getPlayer(true).setAi(!game.getPlayer(true).isAi());
WaitMaster.receiveInput(WAIT_OPERATIONS.ACTION_COMPLETE, true);
break;
case ADD_TEST_SPELLS:
TestMasterContent.addTestActives(false, infoObj.getType(), true);
break;
case ADD_ALL_SPELLS:
TestMasterContent.addTestActives(true, infoObj.getType(), true);
break;
case TOGGLE_GRAPHICS_TEST:
DrawMasterStatic.GRAPHICS_TEST_MODE = !DrawMasterStatic.GRAPHICS_TEST_MODE;
if (DrawMasterStatic.GRAPHICS_TEST_MODE) {
DrawMasterStatic.FULL_GRAPHICS_TEST_MODE = DialogMaster.confirm("Full test on?");
} else {
DrawMasterStatic.FULL_GRAPHICS_TEST_MODE = false;
}
break;
case TOGGLE_LOG:
{
String e = ListChooser.chooseEnum(LOG_CHANNEL.class);
LogMaster.toggle(e);
break;
}
case TOGGLE_QUIET:
quiet = !quiet;
break;
case TOGGLE_FREE_ACTIONS:
TestMasterContent.toggleFree();
break;
case GOD_MODE:
TestMasterContent.toggleImmortal();
// game.getManager().refreshAll();
break;
case RESTART:
// if (!altMode) {
// if (DialogMaster.confirm("Select anew?")) {
// FAST_DC.getLauncher().selectiveInit();
// }
// }
game.getManager().getDeathMaster().killAllUnits(true, false, quiet);
game.getBattleMaster().getSpawner().spawnCustomParty(true);
game.getBattleMaster().getSpawner().spawnCustomParty(false);
game.getManager().refreshAll();
WaitMaster.receiveInput(WAIT_OPERATIONS.ACTION_COMPLETE, true);
return func;
case CLEAR:
boolean respawn = isAltMode();
game.getManager().getDeathMaster().killAllUnits(!isAltMode());
if (respawn) {
// /respawn!
game.getBattleMaster().getSpawner().spawnCustomParty(true);
game.getBattleMaster().getSpawner().spawnCustomParty(false);
}
game.getManager().refreshAll();
break;
case KILL_ALL_UNITS:
game.getManager().getDeathMaster().killAll(isAltMode());
break;
case ACTIVATE_UNIT:
if (isAltMode()) {
getObj().modifyParameter(PARAMS.C_N_OF_ACTIONS, 100);
}
if (getObj().isMine()) {
game.getManager().setActivatingAction(null);
game.getManager().activeSelect(getObj());
} else {
WaitMaster.receiveInput(WAIT_OPERATIONS.ACTION_COMPLETE, true);
WaitMaster.WAIT(1234);
getObj().modifyParameter(PARAMS.C_N_OF_ACTIONS, 100);
}
game.getVisionMaster().refresh();
break;
case ADD_ITEM:
if (isAltMode()) {
TYPE = DC_TYPE.WEAPONS;
} else {
TYPE = (DC_TYPE) DialogMaster.getChosenOption("Choose item type...", DC_TYPE.WEAPONS, DC_TYPE.ARMOR, DC_TYPE.ITEMS, DC_TYPE.JEWELRY);
}
if (isAltMode()) {
if (!selectWeaponType()) {
break;
}
} else if (!selectType(TYPE)) {
break;
}
if (!selectTarget(ref)) {
selectedTarget = infoObj;
}
if (selectedTarget == null) {
break;
}
boolean quick = false;
if (isAltMode()) {
quick = false;
} else if (TYPE == DC_TYPE.ITEMS) {
quick = true;
} else if (TYPE == DC_TYPE.WEAPONS) {
quick = DialogMaster.confirm("quick slot item?");
}
DC_HeroItemObj item = ItemFactory.createItemObj(selectedType, selectedTarget.getOwner(), game, ref, quick);
if (!quick) {
if (TYPE != DC_TYPE.JEWELRY) {
selectedTarget.equip(item, TYPE == DC_TYPE.ARMOR ? ItemEnums.ITEM_SLOT.ARMOR : ItemEnums.ITEM_SLOT.MAIN_HAND);
}
} else {
selectedTarget.addQuickItem((DC_QuickItemObj) item);
}
// selectedTarget.addItemToInventory(item);
game.getManager().refreshGUI();
break;
case ADD_SPELL:
if (!selectType(DC_TYPE.SPELLS)) {
break;
}
if (!selectTarget(ref)) {
selectedTarget = infoObj;
}
if (selectedTarget == null) {
break;
}
TestMasterContent.setTEST_LIST(TestMasterContent.getTEST_LIST() + selectedType.getName() + ";");
selectedTarget.getSpells().add(new DC_SpellObj(selectedType, selectedTarget.getOwner(), game, selectedTarget.getRef()));
game.getManager().refreshGUI();
break;
case ADD_SKILL:
case ADD_ACTIVE:
PROPERTY prop = G_PROPS.ACTIVES;
DC_TYPE T = DC_TYPE.ACTIONS;
if (func == DEBUG_FUNCTIONS.ADD_SKILL) {
prop = PROPS.SKILLS;
T = DC_TYPE.SKILLS;
}
String type = ListChooser.chooseType(T);
if (type == null) {
break;
}
if (!new SelectiveTargeting(new Conditions(ConditionMaster.getTYPECondition(C_OBJ_TYPE.BF_OBJ))).select(ref)) {
break;
}
lastType = type;
new AddBuffEffect(type + " hack", new ModifyPropertyEffect(prop, MOD_PROP_TYPE.ADD, type), new Formula("1")).apply(ref);
if (func == DEBUG_FUNCTIONS.ADD_ACTIVE) {
infoObj.getActives().add(game.getActionManager().getAction(type, infoObj));
game.getActionManager().constructActionMaps(infoObj);
}
// instead of toBase()
break;
case ADD_PASSIVE:
// same method
infoObj.getPassives().add(AbilityConstructor.getPassive(ListChooser.chooseType(DC_TYPE.ABILS), infoObj));
infoObj.activatePassives();
break;
case CHANGE_OWNER:
// if already has, make permanent
new AddBuffEffect("ownership hack", new OwnershipChangeEffect(), new Formula("1")).apply(ref);
break;
case END_TURN:
game.getManager().setActivatingAction(null);
WaitMaster.receiveInput(WAIT_OPERATIONS.ACTION_INPUT, null);
return func;
case KILL_UNIT:
if (arg != null) {
arg.kill(infoObj, !isAltMode(), isAltMode());
} else {
infoObj.kill(infoObj, !isAltMode(), isAltMode());
}
// .getInfoObj());
break;
case ADD_CHAR:
summon(true, DC_TYPE.CHARS, ref);
break;
case ADD_OBJ:
summon(null, DC_TYPE.BF_OBJ, new Ref(game));
break;
case ADD_UNIT:
summon(true, DC_TYPE.UNITS, ref);
break;
case SET_WAVE_POWER:
Integer forcedPower;
forcedPower = DialogMaster.inputInt();
if (forcedPower < 0) {
forcedPower = null;
}
ArenaBattleMaster a = (ArenaBattleMaster) game.getBattleMaster();
a.getWaveAssembler().setForcedPower(forcedPower);
break;
case SPAWN_CUSTOM_WAVE:
coordinate = getGame().getBattleFieldManager().pickCoordinate();
ObjType waveType = ListChooser.chooseType_(DC_TYPE.ENCOUNTERS);
Wave wave = new Wave(coordinate, waveType, game, ref, game.getPlayer(!isAltMode()));
String value = new ListChooser(SELECTION_MODE.MULTIPLE, StringMaster.openContainer(wave.getProperty(PROPS.UNIT_TYPES)), DC_TYPE.UNITS).choose();
wave.setProperty(PROPS.UNIT_TYPES, value);
// PROPS.EXTENDED_PRESET_GROUP
break;
case SPAWN_PARTY:
coordinate = getGame().getBattleFieldManager().pickCoordinate();
ObjType party = ListChooser.chooseType_(DC_TYPE.PARTY);
game.getBattleMaster().getSpawner().spawnCustomParty(coordinate, null, party);
break;
case SPAWN_WAVE:
if (!isAltMode()) {
coordinate = getGame().getBattleFieldManager().pickCoordinate();
} else {
// FACING_DIRECTION side = new EnumChooser<FACING_DIRECTION>()
// .choose(FACING_DIRECTION.class);
// if (side== FACING_DIRECTION.NONE)
// game.getBattleMaster().getSpawner().getPositioner().setForcedSide(side);
}
String typeName = ListChooser.chooseType(DC_TYPE.ENCOUNTERS);
if (typeName == null) {
return func;
}
try {
game.getBattleMaster().getSpawner().spawnWave(typeName, game.getPlayer(ALT_AI_PLAYER), coordinate);
} catch (Exception e) {
main.system.ExceptionMaster.printStackTrace(e);
} finally {
// game.getBattleMaster().getSpawner().getPositioner().setForcedSide(null);
}
game.getManager().refreshAll();
break;
case ADD_ENEMY_UNIT:
summon(false, DC_TYPE.UNITS, new Ref(game));
// game.getManager().refreshAll();
break;
case TOGGLE_ALT_AI:
{
game.getPlayer(true).setAi(!game.getPlayer(true).isAi());
ALT_AI_PLAYER = !ALT_AI_PLAYER;
break;
}
case TOGGLE_DEBUG:
{
game.setDebugMode(!game.isDebugMode());
Launcher.setDEBUG_MODE(!Launcher.isDEBUG_MODE_DEFAULT());
break;
}
case WAITER_INPUT:
{
String input = DialogMaster.inputText("operation");
WAIT_OPERATIONS operation = new EnumMaster<WAIT_OPERATIONS>().retrieveEnumConst(WAIT_OPERATIONS.class, input);
if (operation == null) {
operation = new EnumMaster<WAIT_OPERATIONS>().retrieveEnumConst(WAIT_OPERATIONS.class, input, true);
}
if (operation == null) {
DialogMaster.error("no such operation");
return func;
}
input = DialogMaster.inputText("input");
WaitMaster.receiveInput(operation, input);
}
case REMOVE_HACKS:
break;
// break;
case TOGGLE_LIGHTING:
break;
case TOGGLE_FOG:
break;
case GUI_EVENT:
EmitterController.getInstance();
String string = ListChooser.chooseEnum(GuiEventType.class);
GuiEventManager.trigger(new EnumMaster<GuiEventType>().retrieveEnumConst(GuiEventType.class, string), null);
break;
case SFX_PLAY_LAST:
EmitterController.getInstance();
GuiEventManager.trigger(GuiEventType.SFX_PLAY_LAST, null);
break;
case SFX_ADD:
EmitterController.getInstance();
GuiEventManager.trigger(GuiEventType.CREATE_EMITTER, null);
break;
case SFX_ADD_RANDOM:
EmitterController.getInstance().getInstance();
GuiEventManager.trigger(GuiEventType.CREATE_EMITTER, true);
break;
case SFX_MODIFY:
EmitterController.getInstance().modify();
break;
case SFX_SET:
EmitterController.getInstance().setForActive();
break;
case SFX_SAVE:
EmitterController.getInstance().save();
break;
}
} catch (Exception e) {
main.system.ExceptionMaster.printStackTrace(e);
} finally {
debugFunctionRunning = false;
}
if (isResetRequired(func))
reset();
if (transmitted) {
// String transmittedData = lastType + StringMaster.NET_DATA_SEPARATOR + infoObj
// + StringMaster.NET_DATA_SEPARATOR + data + StringMaster.NET_DATA_SEPARATOR
// + ref;
// game.getCommunicator().transmitDebugFunction(func, transmittedData);
}
return func;
}
Aggregations