Search in sources :

Example 11 with BattleFieldObject

use of eidolons.entity.obj.BattleFieldObject in project Eidolons by IDemiurge.

the class DamageDealer method dealDamage.

// proceeds to deal the damage - to toughness and endurance separately and with appropriate events
private static int dealDamage(Ref ref, boolean magical, DAMAGE_TYPE dmg_type) {
    Event event = new Event(magical ? STANDARD_EVENT_TYPE.UNIT_IS_BEING_DEALT_SPELL_DAMAGE : STANDARD_EVENT_TYPE.UNIT_IS_BEING_DEALT_PHYSICAL_DAMAGE, ref);
    if (!event.fire()) {
        return -1;
    }
    int amount = ref.getAmount();
    if (amount <= 0) {
        return 0;
    }
    ref = Ref.getCopy(ref);
    DC_ActiveObj active = (DC_ActiveObj) ref.getActive();
    Unit attacker = (Unit) ref.getSourceObj();
    BattleFieldObject attacked = (BattleFieldObject) ref.getTargetObj();
    if (dmg_type == null) {
        dmg_type = active.getEnergyType();
    }
    int blocked = 0;
    if (attacked instanceof Unit)
        if (!DamageCalculator.isUnblockable(ref)) {
            if (ref.getSource() != ref.getTarget()) {
                if (isAttack(ref)) {
                    blocked = attacked.getGame().getArmorMaster().getArmorBlockDamage(amount, (Unit) attacked, attacker, active);
                } else {
                    blocked = attacked.getGame().getArmorMaster().getArmorBlockForActionDamage(amount, dmg_type, attacker, active);
                }
            }
        }
    int t_damage = DamageCalculator.calculateToughnessDamage(attacked, attacker, amount, ref, blocked, dmg_type);
    int e_damage = DamageCalculator.calculateEnduranceDamage(attacked, attacker, amount, ref, blocked, dmg_type);
    // PhaseAnimator.handleDamageAnimAndLog(ref, attacked, magical, dmg_type);
    ref.setAmount(e_damage);
    // TODO separate event types?
    if (!new Event(magical ? STANDARD_EVENT_TYPE.UNIT_IS_DEALT_MAGICAL_ENDURANCE_DAMAGE : STANDARD_EVENT_TYPE.UNIT_IS_DEALT_PHYSICAL_ENDURANCE_DAMAGE, ref).fire()) {
        return 0;
    }
    ref.setAmount(t_damage);
    if (!new Event(magical ? STANDARD_EVENT_TYPE.UNIT_IS_DEALT_MAGICAL_TOUGHNESS_DAMAGE : STANDARD_EVENT_TYPE.UNIT_IS_DEALT_PHYSICAL_TOUGHNESS_DAMAGE, ref).fire()) {
        return 0;
    }
    int result = dealPureDamage(attacked, attacker, t_damage, e_damage, ref);
    ref.setAmount(result);
    new Event(magical ? STANDARD_EVENT_TYPE.UNIT_HAS_BEEN_DEALT_SPELL_DAMAGE : STANDARD_EVENT_TYPE.UNIT_HAS_BEEN_DEALT_PHYSICAL_DAMAGE, ref).fire();
    if (isLogOn()) {
        attacked.getGame().getLogManager().doneLogEntryNode(ENTRY_TYPE.DAMAGE, attacked, amount);
    }
    return result;
}
Also used : BattleFieldObject(eidolons.entity.obj.BattleFieldObject) Event(main.game.logic.event.Event) DC_ActiveObj(eidolons.entity.active.DC_ActiveObj) Unit(eidolons.entity.obj.unit.Unit)

Example 12 with BattleFieldObject

use of eidolons.entity.obj.BattleFieldObject in project Eidolons by IDemiurge.

the class VisionMaster method triggerGuiEvents.

public void triggerGuiEvents() {
    visibleList.clear();
    invisibleList.clear();
    for (BattleFieldObject sub : game.getBfObjects()) {
        if (sub.isDead())
            continue;
        if (isVisibleOnGrid(sub))
            visibleList.add(sub);
        else
            invisibleList.add(sub);
    }
    // WaitMaster.waitForInput(WAIT_OPERATIONS.GUI_READY);
    main.system.auxiliary.log.LogMaster.log(1, ">>>>>> invisibleList  = " + invisibleList);
    main.system.auxiliary.log.LogMaster.log(1, ">>>>>> visibleList  = " + visibleList);
    if (LOG_CHANNEL.VISIBILITY_DEBUG.isOn()) {
        String string = "";
        for (BattleFieldObject sub : visibleList) {
            string += sub + ": \n";
            string += "getVisibilityLevelForPlayer= " + sub.getVisibilityLevelForPlayer() + "\n";
            string += "getVisibilityLevel= " + sub.getVisibilityLevel() + "\n";
            string += "getPlayerVisionStatus= " + sub.getPlayerVisionStatus(true) + "\n";
            string += "getGamma= " + sub.getGamma() + "\n";
        }
        LogMaster.log(1, "***********" + "" + string);
    }
    visible = visibleList.toArray(new BattleFieldObject[visibleList.size()]);
    invisible = invisibleList.toArray(new BattleFieldObject[invisibleList.size()]);
    GuiEventManager.trigger(GuiEventType.UNIT_VISIBLE_OFF, invisibleList);
    GuiEventManager.trigger(GuiEventType.UNIT_VISIBLE_ON, visibleList);
}
Also used : BattleFieldObject(eidolons.entity.obj.BattleFieldObject)

Example 13 with BattleFieldObject

use of eidolons.entity.obj.BattleFieldObject in project Eidolons by IDemiurge.

the class GridPanel method resetVisible.

private void resetVisible() {
    for (BattleFieldObject sub : viewMap.keySet()) {
        BaseView view = viewMap.get(sub);
        // ((UnitView) view).setFlickering(units.get(v));
        if (view.getActions().size == 0) {
            if (sub.isDead()) {
                view.setVisible(false);
                view.remove();
            }
        }
    }
    resetVisibleRequired = false;
}
Also used : BattleFieldObject(eidolons.entity.obj.BattleFieldObject)

Example 14 with BattleFieldObject

use of eidolons.entity.obj.BattleFieldObject in project Eidolons by IDemiurge.

the class GridPanel method setVisible.

private void setVisible(BaseView view, boolean visible) {
    if (view == null)
        return;
    if (view.getParent() == null)
        addActor(view);
    if (visible) {
        if (view.isVisible())
            return;
    } else {
        if (!view.isVisible())
            return;
        if (view.getActionsOfClass(FadeOutAction.class, false).size > 0)
            return;
    }
    if (isFadeAnimForUnitsOn()) {
        if (visible) {
            view.getColor().a = 0;
            view.setVisible(true);
            ActorMaster.addFadeInAction(view, 0.25f);
        } else {
            ActorMaster.addFadeOutAction(view, 0.25f);
            ActorMaster.addSetVisibleAfter(view, false);
        }
        if (view instanceof GridUnitView) {
            BattleFieldObject obj = getObjectForView(view);
            LastSeenMaster.resetLastSeen((GridUnitView) view, obj, !visible);
            (((GridUnitView) view).getLastSeenView()).setOutlinePathSupplier(() -> StringMaster.toStringOrNull(obj.getLastSeenOutline()));
        }
    } else
        view.setVisible(visible);
}
Also used : BattleFieldObject(eidolons.entity.obj.BattleFieldObject)

Example 15 with BattleFieldObject

use of eidolons.entity.obj.BattleFieldObject 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)

Aggregations

BattleFieldObject (eidolons.entity.obj.BattleFieldObject)52 Unit (eidolons.entity.obj.unit.Unit)24 Coordinates (main.game.bf.Coordinates)22 DC_Obj (eidolons.entity.obj.DC_Obj)12 Ref (main.entity.Ref)12 DC_ActiveObj (eidolons.entity.active.DC_ActiveObj)10 Obj (main.entity.obj.Obj)9 DequeImpl (main.system.datatypes.DequeImpl)8 Event (main.game.logic.event.Event)7 ArrayList (java.util.ArrayList)6 List (java.util.List)6 DIRECTION (main.game.bf.Coordinates.DIRECTION)5 TextureRegion (com.badlogic.gdx.graphics.g2d.TextureRegion)4 Vector2 (com.badlogic.gdx.math.Vector2)4 Align (com.badlogic.gdx.utils.Align)4 Eidolons (eidolons.game.core.Eidolons)4 Gdx (com.badlogic.gdx.Gdx)3 Keys (com.badlogic.gdx.Input.Keys)3 Batch (com.badlogic.gdx.graphics.g2d.Batch)3 Group (com.badlogic.gdx.scenes.scene2d.Group)3