com.dongbat.game.buff.effects.HotBlow.java Source code

Java tutorial

Introduction

Here is the source code for com.dongbat.game.buff.effects.HotBlow.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dongbat.game.buff.effects;

import com.artemis.Entity;
import com.artemis.World;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Array;
import com.dongbat.game.buff.BuffEffect;
import com.dongbat.game.component.UnitMovement;
import com.dongbat.game.util.BuffUtil;
import com.dongbat.game.util.EntityUtil;
import com.dongbat.game.util.PhysicsUtil;
import com.dongbat.game.util.WorldQueryUtil;

/**
 *
 * @author Admin
 */
public class HotBlow implements BuffEffect {

    private float radius = 5;
    private float degree = 30;
    private float forceStrength;
    private int duration;

    @Override
    public void durationStart(World world, Entity source, Entity target) {
    }

    @Override
    public void update(World world, Entity source, Entity target) {

        Vector2 playerPosition = PhysicsUtil.getPosition(world, source);
        UnitMovement unitMs = EntityUtil.getComponent(world, target, UnitMovement.class);
        if (unitMs.getDirectionVelocity() == null) {
            return;
        }
        Array<Entity> foundList = WorldQueryUtil.findAnyInRadius(world, playerPosition, radius);
        Array<Entity> filterList = WorldQueryUtil.filterEntityInRay(world, foundList, playerPosition,
                unitMs.getDirectionVelocity(), degree);
        for (Entity e : filterList) {
            if (e != source) {
                Vector2 victimPosition = PhysicsUtil.getPosition(world, e);
                Vector2 direction = victimPosition.cpy().sub(playerPosition).cpy().scl(-1).nor();
                BuffUtil.addBuff(world, source, e, "HotBlowForced", duration, 1, "forceStrength", forceStrength,
                        "direction", direction.cpy().scl(-1));
                BuffUtil.addBuff(world, source, e, "ToxicFood", 400, 1);
            }
        }
    }

    @Override
    public void durationEnd(World world, Entity source, Entity target) {
    }

}