Search in sources :

Example 41 with Conditions

use of main.elements.conditions.Conditions 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;
}
Also used : DC_HeroItemObj(eidolons.entity.item.DC_HeroItemObj) ListChooser(main.swing.generic.components.editors.lists.ListChooser) Unit(eidolons.entity.obj.unit.Unit) Conditions(main.elements.conditions.Conditions) AddBuffEffect(eidolons.ability.effects.attachment.AddBuffEffect) Formula(main.system.math.Formula) DC_Cell(eidolons.entity.obj.DC_Cell) DC_SpellObj(eidolons.entity.active.DC_SpellObj) ArenaBattleMaster(eidolons.game.battlecraft.logic.battle.arena.ArenaBattleMaster) ModifyPropertyEffect(eidolons.ability.effects.common.ModifyPropertyEffect) GuiEventType(main.system.GuiEventType) DC_TYPE(main.content.DC_TYPE) PROPERTY(main.content.values.properties.PROPERTY) WAIT_OPERATIONS(main.system.threading.WaitMaster.WAIT_OPERATIONS) Coordinates(main.game.bf.Coordinates) SelectiveTargeting(main.elements.targeting.SelectiveTargeting) Wave(eidolons.game.battlecraft.logic.battle.arena.Wave) Ref(main.entity.Ref) ObjType(main.entity.type.ObjType) EnumMaster(main.system.auxiliary.EnumMaster) LOG_CHANNEL(main.system.auxiliary.log.LogMaster.LOG_CHANNEL) OwnershipChangeEffect(main.ability.effects.common.OwnershipChangeEffect) File(java.io.File)

Example 42 with Conditions

use of main.elements.conditions.Conditions in project Eidolons by IDemiurge.

the class TemplateSelectiveTargeting method initTargeting.

public void initTargeting() {
    Conditions conditions = DC_ConditionMaster.getSelectiveTargetingTemplateConditions(template);
    // TODO ?
    Condition c = filter.getConditions();
    if (c != null) {
        conditions.add(c);
    }
    filter.setConditions(conditions);
    filter.setTYPE(getTYPEforTemplate(template));
    initialized = true;
}
Also used : Condition(main.elements.conditions.Condition) Conditions(main.elements.conditions.Conditions)

Example 43 with Conditions

use of main.elements.conditions.Conditions in project Eidolons by IDemiurge.

the class Targeter method canBeTargeted.

public boolean canBeTargeted(Integer id, boolean caching) {
    Targeting targeting = getTargeting();
    Map<FACING_DIRECTION, Map<Integer, Boolean>> map = getTargetingCache().get(getOwnerObj().getCoordinates());
    if (map == null) {
        map = new HashMap<>();
        getTargetingCache().put(getOwnerObj().getCoordinates(), map);
    }
    Map<Integer, Boolean> map2 = map.get(getOwnerObj().getFacing());
    if (map2 == null) {
        map2 = new HashMap<>();
        map.put(getOwnerObj().getFacing(), map2);
    }
    // TODO for ai?
    Boolean result = map2.get(id);
    if (caching) {
        if (result != null)
            return result;
    }
    if (targeting == null) {
        // TODO ??
        if (getEntity().getActives().size() > 1) {
            return true;
        }
        if (!getEntity().getActives().isEmpty()) {
            if (getEntity().getActives().get(0).getAbilities().getAbils().size() > 1) {
                return true;
            }
        }
        return false;
    }
    Ref REF = getEntity().getRef().getCopy();
    REF.setMatch(id);
    if (targeting instanceof MultiTargeting) {
    // TODO ??
    }
    Conditions conditions = targeting.getFilter().getConditions();
    if (result != null) {
        if (result) {
            if (!conditions.preCheck(REF)) {
                return false;
            }
        }
        if (!result) {
            if (conditions.preCheck(REF)) {
                return true;
            }
        }
    }
    if (conditions.isEmpty())
        if (targeting instanceof TemplateSelectiveTargeting)
            ((TemplateSelectiveTargeting) targeting).initTargeting();
    getEntity().getRef().getSourceObj().getRef().setInfoEntity(getEntity());
    result = conditions.preCheck(REF);
    map2.put(id, result);
    return result;
}
Also used : FACING_DIRECTION(main.game.bf.Coordinates.FACING_DIRECTION) Ref(main.entity.Ref) TemplateSelectiveTargeting(eidolons.ability.targeting.TemplateSelectiveTargeting) Targeting(main.elements.targeting.Targeting) MultiTargeting(main.elements.targeting.MultiTargeting) AutoTargeting(main.elements.targeting.AutoTargeting) TemplateSelectiveTargeting(eidolons.ability.targeting.TemplateSelectiveTargeting) SelectiveTargeting(main.elements.targeting.SelectiveTargeting) MultiTargeting(main.elements.targeting.MultiTargeting) HashMap(java.util.HashMap) Map(java.util.Map) Conditions(main.elements.conditions.Conditions)

Aggregations

Conditions (main.elements.conditions.Conditions)43 Ref (main.entity.Ref)12 Condition (main.elements.conditions.Condition)7 SelectiveTargeting (main.elements.targeting.SelectiveTargeting)6 Obj (main.entity.obj.Obj)6 AddBuffEffect (eidolons.ability.effects.attachment.AddBuffEffect)5 ArrayList (java.util.ArrayList)5 NumericCondition (main.elements.conditions.NumericCondition)5 AutoTargeting (main.elements.targeting.AutoTargeting)5 Unit (eidolons.entity.obj.unit.Unit)4 ObjType (main.entity.type.ObjType)4 Coordinates (main.game.bf.Coordinates)4 FacingCondition (eidolons.ability.conditions.FacingCondition)3 AddTriggerEffect (eidolons.ability.effects.attachment.AddTriggerEffect)3 TemplateSelectiveTargeting (eidolons.ability.targeting.TemplateSelectiveTargeting)3 Effects (main.ability.effects.Effects)3 OrConditions (main.elements.conditions.OrConditions)3 RefCondition (main.elements.conditions.RefCondition)3 Targeting (main.elements.targeting.Targeting)3 GroupImpl (main.entity.group.GroupImpl)3