Search in sources :

Example 46 with Ref

use of main.entity.Ref in project Eidolons by IDemiurge.

the class LocationSpawner method getCreepGroupForBlock.

private Wave getCreepGroupForBlock(int preferredPower, Dungeon dungeon, MapBlock block, int min, int max) {
    // alt? vielleicht fur einige spezielle orte...
    String property = dungeon.getProperty(PROPS.ENCOUNTERS);
    int mod = block.getSpawningPriority();
    if (mod == 0) {
        mod = 100;
    }
    Wave wave;
    List<ObjType> list = DataManager.toTypeList(property, DC_TYPE.ENCOUNTERS);
    Collections.shuffle(list);
    ObjType type = null;
    for (ObjType t : list) {
        type = t;
        if (EncounterMaster.getPower(type, false) < min * mod / 100) {
            continue;
        }
        if (EncounterMaster.getPower(type, false) > max * mod / 100) {
            continue;
        }
        break;
    }
    if (type == null) {
        type = new RandomWizard<ObjType>().getObjectByWeight(property, ObjType.class);
    }
    wave = new Wave(type, game, new Ref(game), game.getPlayer(false));
    wave.setPreferredPower(preferredPower * mod / 100);
    wave.setBlock(block);
    return wave;
}
Also used : Wave(eidolons.game.battlecraft.logic.battle.arena.Wave) Ref(main.entity.Ref) ObjType(main.entity.type.ObjType) RandomWizard(main.system.auxiliary.RandomWizard)

Example 47 with Ref

use of main.entity.Ref in project Eidolons by IDemiurge.

the class LocationSpawner method spawnDungeonCreeps.

public void spawnDungeonCreeps(Location dungeon) {
    String info = dungeon.getProperty(PROPS.ENCOUNTER_INFO);
    Map<Coordinates, Integer> delayMap = new HashMap<>();
    for (String substring : StringMaster.open(info)) {
        Coordinates c = new Coordinates(substring.split("")[0]);
        int round = StringMaster.getInteger(substring.split("=")[1]);
        delayMap.put(c, round);
    }
    /*
         * Assign block per creep group? So a dungeon has a repertoire and map template...
		 * then we calculate total power...
		 * First, spawn the 'must have' groups, around entrances and treasures
		 */
    if (dungeon.isSublevel()) {
    } else {
    // different alg?
    }
    // PartyManager.getParty().getTotalPower();
    // int power = DungeonMaster.getDungeonPowerTotal(dungeon);
    // int maxGroups = dungeon.getIntParam(PARAMS.MAX_GROUPS);
    int power = 0;
    int preferredPower = dungeon.getLevel() + // + PartyManager.getParty().getPower()
    getBattleMaster().getOptionManager().getOptions().getBattleLevel();
    int min = preferredPower * 2 / 3;
    int max = preferredPower * 3 / 2;
    for (MapBlock block : dungeon.getPlan().getBlocks()) {
        Wave group;
        if (specialEncounters.get(dungeon) != null) {
            Map<Coordinates, ObjType> specEncounters = specialEncounters.get(dungeon).get(block);
            for (Coordinates c : specEncounters.keySet()) {
                ObjType waveType = specEncounters.get(c);
                if (waveType.getGroup().equalsIgnoreCase("Substitute")) {
                    waveType = EncounterMaster.getSubstituteEncounterType(waveType, dungeon.getDungeon(), preferredPower);
                }
                group = new Wave(waveType, game, new Ref(), game.getPlayer(false));
                group.setCoordinates(c);
                Integer delay = delayMap.get(c);
                // TODO    getBattleMaster().getConstructor().scheduleEncounter(group, delay);
                // spawnWave(group, true);
                // initGroup(group);
                power += group.getPower();
            }
        } else {
            // TODO POWER PER BLOCK!
            if (!autoSpawnOn) {
                continue;
            }
            // break;
            if (!checkSpawnBlock(block)) {
                continue;
            }
            // sort blocks! by spawn priority...
            // can be more than 1 group, right? maybe merge?
            group = getCreepGroupForBlock(preferredPower, dungeon.getDungeon(), block, min, max);
            group.setPreferredPower(preferredPower);
            // spawnWave(group, true);
            // initGroup(group);
            // power -= group.getPower();
            power += group.getPower();
        }
    }
    if (power > min) {
    // spawn wandering creeps - apart from groups? in max distance from
    // them?
    }
}
Also used : Wave(eidolons.game.battlecraft.logic.battle.arena.Wave) Ref(main.entity.Ref) ObjType(main.entity.type.ObjType) Coordinates(main.game.bf.Coordinates) MapBlock(eidolons.game.battlecraft.logic.dungeon.location.building.MapBlock)

Example 48 with Ref

use of main.entity.Ref in project Eidolons by IDemiurge.

the class ArenaSpawner method newWave.

public void newWave(DC_Player player) {
    String type = ListChooser.chooseType(DC_TYPE.ENCOUNTERS);
    if (type == null) {
        return;
    }
    newWave(new Wave(DataManager.getType(type, DC_TYPE.ENCOUNTERS), game, new Ref(game), player));
}
Also used : Wave(eidolons.game.battlecraft.logic.battle.arena.Wave) Ref(main.entity.Ref)

Example 49 with Ref

use of main.entity.Ref in project Eidolons by IDemiurge.

the class GridPanel method onIngameEvent.

private EventCallback onIngameEvent() {
    return param -> {
        Event event = (Event) param.get();
        Ref ref = event.getRef();
        boolean caught = false;
        if (event.getType() == STANDARD_EVENT_TYPE.EFFECT_HAS_BEEN_APPLIED) {
            GuiEventManager.trigger(GuiEventType.EFFECT_APPLIED, event.getRef());
            caught = true;
        } else if (event.getType() == STANDARD_EVENT_TYPE.UNIT_HAS_CHANGED_FACING || event.getType() == STANDARD_EVENT_TYPE.UNIT_HAS_TURNED_CLOCKWISE || event.getType() == STANDARD_EVENT_TYPE.UNIT_HAS_TURNED_ANTICLOCKWISE) {
            BattleFieldObject hero = (BattleFieldObject) ref.getObj(KEYS.TARGET);
            // if (hero.isMainHero()) TODO this is an experiment (insane) feature...
            // if (hero.isMine()) {
            // turnField(event.getType());
            // }
            BaseView view = viewMap.get(hero);
            if (view != null && view instanceof GridUnitView) {
                GridUnitView unitView = ((GridUnitView) view);
                unitView.updateRotation(hero.getFacing().getDirection().getDegrees());
                // SoundController.getCustomEventSound(SOUND_EVENT.UNIT_TURNS, );
                if (hero instanceof Unit)
                    DC_SoundMaster.playTurnSound((Unit) hero);
            }
            caught = true;
        } else if (event.getType() == STANDARD_EVENT_TYPE.UNIT_HAS_FALLEN_UNCONSCIOUS) {
            GuiEventManager.trigger(UNIT_GREYED_OUT_ON, ref.getSourceObj());
        } else if (event.getType() == STANDARD_EVENT_TYPE.UNIT_HAS_RECOVERED_FROM_UNCONSCIOUSNESS) {
            GuiEventManager.trigger(UNIT_GREYED_OUT_OFF, ref.getSourceObj());
        } else if (event.getType() == STANDARD_EVENT_TYPE.UNIT_HAS_BEEN_KILLED) {
            GuiEventManager.trigger(UNIT_GREYED_OUT_OFF, ref.getSourceObj());
            if (!DeathAnim.isOn() || ref.isDebug()) {
                GuiEventManager.trigger(DESTROY_UNIT_MODEL, ref.getTargetObj());
            }
            caught = true;
        } else if (event.getType() == STANDARD_EVENT_TYPE.UNIT_BEING_MOVED) {
            if (// || AnimMaster.isAnimationOffFor(ref.getSourceObj(), viewMap.get(ref.getSourceObj())))
            !MoveAnimation.isOn())
                removeUnitView((BattleFieldObject) ref.getSourceObj());
            caught = true;
        } else if (event.getType() == STANDARD_EVENT_TYPE.UNIT_FINISHED_MOVING) {
            if (!MoveAnimation.isOn() || AnimMaster.isAnimationOffFor(ref.getSourceObj(), viewMap.get(ref.getSourceObj())))
                moveUnitView((BattleFieldObject) ref.getSourceObj());
            caught = true;
        } else if (event.getType().name().startsWith("PARAM_BEING_MODIFIED")) {
            caught = true;
        } else if (event.getType().name().startsWith("PROP_")) {
            caught = true;
        } else if (event.getType().name().startsWith("ABILITY_")) {
            caught = true;
        } else if (event.getType().name().startsWith("EFFECT_")) {
            caught = true;
        } else if (event.getType().name().startsWith("PARAM_MODIFIED")) {
            if (GuiEventManager.isParamEventAlwaysFired(event.getType().getArg())) {
                UnitView view = (UnitView) getViewMap().get(event.getRef().getSourceObj());
                if (view != null)
                    if (view.isVisible())
                        if (view.getHpBar() != null)
                            // if (view.getHpBar( ).getDataSource().canHpBarBeVisible())
                            view.resetHpBar(new ResourceSourceImpl((BattleFieldObject) event.getRef().getSourceObj()));
            }
            caught = true;
        }
        if (!caught) {
        /*      System.out.println("catch ingame event: " + event.getType() + " in " + event.getRef());
           */
        }
    };
}
Also used : StrPathBuilder(main.system.auxiliary.StrPathBuilder) InputEvent(com.badlogic.gdx.scenes.scene2d.InputEvent) LastSeenMaster(eidolons.game.battlecraft.logic.battlefield.vision.LastSeenMaster) GuiEventType(main.system.GuiEventType) MapMaster(main.system.auxiliary.data.MapMaster) Entrance(eidolons.game.module.dungeoncrawl.dungeon.Entrance) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) DungeonScreen(eidolons.libgdx.screens.DungeonScreen) Ref(main.entity.Ref) Pair(org.apache.commons.lang3.tuple.Pair) Vector2(com.badlogic.gdx.math.Vector2) GdxMaster(eidolons.libgdx.GdxMaster) TextureRegion(com.badlogic.gdx.graphics.g2d.TextureRegion) OptionsMaster(eidolons.system.options.OptionsMaster) Image(com.badlogic.gdx.scenes.scene2d.ui.Image) HpBar(eidolons.libgdx.bf.overlays.HpBar) OUTLINE_TYPE(main.content.enums.rules.VisionEnums.OUTLINE_TYPE) MoveAnimation(eidolons.libgdx.anims.std.MoveAnimation) TextureManager(eidolons.libgdx.texture.TextureManager) DC_Obj(eidolons.entity.obj.DC_Obj) ActorMaster(eidolons.libgdx.anims.ActorMaster) Event(main.game.logic.event.Event) FadeOutAction(eidolons.libgdx.anims.actions.FadeOutAction) Align(com.badlogic.gdx.utils.Align) DC_Game(eidolons.game.core.game.DC_Game) BattleFieldObject(eidolons.entity.obj.BattleFieldObject) ShadowMap(eidolons.libgdx.bf.light.ShadowMap) HelpMaster(eidolons.system.text.HelpMaster) List(java.util.List) OutlineMaster(eidolons.game.battlecraft.logic.battlefield.vision.OutlineMaster) Keys(com.badlogic.gdx.Input.Keys) Coordinates(main.game.bf.Coordinates) WallMap(eidolons.libgdx.bf.overlays.WallMap) STANDARD_EVENT_TYPE(main.game.logic.event.Event.STANDARD_EVENT_TYPE) java.util(java.util) DequeImpl(main.system.datatypes.DequeImpl) DeathAnim(eidolons.libgdx.anims.std.DeathAnim) BattleClickListener(eidolons.libgdx.bf.mouse.BattleClickListener) AnimMaster(eidolons.libgdx.anims.AnimMaster) EVENT_TYPE(main.game.logic.event.Event.EVENT_TYPE) Gdx(com.badlogic.gdx.Gdx) Batch(com.badlogic.gdx.graphics.g2d.Batch) WaitMaster(main.system.threading.WaitMaster) GuiEventManager(main.system.GuiEventManager) StringMaster(main.system.auxiliary.StringMaster) DC_Engine(eidolons.game.battlecraft.DC_Engine) OverlaysManager(eidolons.libgdx.bf.overlays.OverlaysManager) PanelActionsDataSource(eidolons.libgdx.gui.panels.dc.actionpanel.datasource.PanelActionsDataSource) GRAPHIC_OPTION(eidolons.system.options.GraphicsOptions.GRAPHIC_OPTION) VisionManager(eidolons.game.battlecraft.logic.battlefield.vision.VisionManager) LogMaster(main.system.auxiliary.log.LogMaster) EventCallback(main.system.EventCallback) KEYS(main.entity.Ref.KEYS) AnimationConstructor(eidolons.libgdx.anims.AnimationConstructor) FloatingTextMaster(eidolons.libgdx.anims.text.FloatingTextMaster) ResourceSourceImpl(eidolons.libgdx.gui.panels.dc.unitinfo.datasource.ResourceSourceImpl) Group(com.badlogic.gdx.scenes.scene2d.Group) StyleHolder(eidolons.libgdx.StyleHolder) TEXT_CASES(eidolons.libgdx.anims.text.FloatingTextMaster.TEXT_CASES) eidolons.libgdx.bf(eidolons.libgdx.bf) WAIT_OPERATIONS(main.system.threading.WaitMaster.WAIT_OPERATIONS) java.awt(java.awt) TextureCache(eidolons.libgdx.texture.TextureCache) Eidolons(eidolons.game.core.Eidolons) Unit(eidolons.entity.obj.unit.Unit) DC_SoundMaster(eidolons.system.audio.DC_SoundMaster) SHADE_LIGHT(eidolons.libgdx.bf.light.ShadowMap.SHADE_LIGHT) ResourceSourceImpl(eidolons.libgdx.gui.panels.dc.unitinfo.datasource.ResourceSourceImpl) Ref(main.entity.Ref) BattleFieldObject(eidolons.entity.obj.BattleFieldObject) InputEvent(com.badlogic.gdx.scenes.scene2d.InputEvent) Event(main.game.logic.event.Event) Unit(eidolons.entity.obj.unit.Unit)

Example 50 with Ref

use of main.entity.Ref in project Eidolons by IDemiurge.

the class StringMaster method getInteger.

public static Integer getInteger(String value, Ref ref) {
    if (value == null)
        return 0;
    if (!isInteger(value)) {
        return new Formula(value).getInt(ref == null ? new Ref() : ref);
    }
    if (value.contains(".")) {
        value = value.split(Pattern.quote("."))[0];
    }
    if (isFAST_INTEGER_MODE()) {
        int result = 0;
        boolean negative = false;
        for (int i = 0; i < value.length(); i++) {
            char c = value.toCharArray()[i];
            if (c == ('.')) {
                break;
            }
            if (c == ('-')) {
                negative = true;
            } else {
                result += getInteger(c) * Math.pow(10, value.length() - i - 1);
            }
        }
        if (negative) {
            // for length
            result = -result;
        }
        return result;
    } else {
        String result = "";
        for (char c : value.toCharArray()) {
            if (c == ('.')) {
                break;
            }
            if (c == ('-') || Character.isDigit(c)) {
                result += c;
            }
        }
        if (!result.isEmpty()) {
            return Integer.valueOf(result);
        }
    }
    return 0;
}
Also used : Formula(main.system.math.Formula) Ref(main.entity.Ref)

Aggregations

Ref (main.entity.Ref)155 Unit (eidolons.entity.obj.unit.Unit)28 ObjType (main.entity.type.ObjType)23 Event (main.game.logic.event.Event)16 ArrayList (java.util.ArrayList)15 Obj (main.entity.obj.Obj)15 DC_ActiveObj (eidolons.entity.active.DC_ActiveObj)13 Coordinates (main.game.bf.Coordinates)13 Conditions (main.elements.conditions.Conditions)12 Formula (main.system.math.Formula)11 BattleFieldObject (eidolons.entity.obj.BattleFieldObject)10 ModifyValueEffect (eidolons.ability.effects.common.ModifyValueEffect)9 PARAMETER (main.content.values.parameters.PARAMETER)9 DC_SpellObj (eidolons.entity.active.DC_SpellObj)8 Effects (main.ability.effects.Effects)8 AddBuffEffect (eidolons.ability.effects.attachment.AddBuffEffect)7 Wave (eidolons.game.battlecraft.logic.battle.arena.Wave)7 Effect (main.ability.effects.Effect)7 DC_HeroItemObj (eidolons.entity.item.DC_HeroItemObj)5 DC_QuickItemObj (eidolons.entity.item.DC_QuickItemObj)5