package de.lighti.parsing;
import java.util.HashSet;
import java.util.Set;
import de.lighti.DefaultGameEventListener;
import de.lighti.model.AppState;
import de.lighti.model.Entity;
public class CreepHandler extends DefaultGameEventListener {
private enum EVENT_TYPE {
DAMAGE( 0 ), HEALING( 1 ), BUUFF_APPLIED( 2 ), BUFF_REMOVED( 3 ), DEATH( 4 );
public static EVENT_TYPE valueOf( int i ) {
for (final EVENT_TYPE e : EVENT_TYPE.values()) {
if (e.id == i) {
return e;
}
}
return null;
}
private int id;
EVENT_TYPE( int i ) {
id = i;
}
}
private final AppState state;
private final Set<String> creepClasses = new HashSet<String>();
public CreepHandler( AppState appState ) {
state = appState;
}
@Override
public void entityCreated( long tickMs, Entity entity ) {
if (entity.getId() == 1088) {
if (entity.getEntityClass().getDtName().contains( "DT_DOTA_BaseNPC_Creep" ) && !creepClasses.contains( entity.getEntityClass().getDtName() )) {
// System.out.println( entity.getEntityClass().getDtName() );
// creepClasses.add( entity.getEntityClass().getDtName() );
}
}
}
@Override
public void entityRemoved( long tickMs, Entity e ) {
// if (e.getEntityClass().getDtName().contains( "DT_DOTA_BaseNPC_Creep" )) {
// System.out.println( "Creep died at " + e.getProperty( "DT_DOTA_BaseNPC.m_cellX" ).getValue() + ", "
// + e.getProperty( "DT_DOTA_BaseNPC.m_cellY" ).getValue() );
// }
}
@Override
public <T> void entityUpdated( long tickMs, Entity e, String name, T oldValue ) {
if (e.getId() == 1088) {
if (e.getEntityClass().getDtName().contains( "DT_DOTA_BaseNPC_Creep" )) {
if (name.equals( "DT_DOTA_BaseNPC.m_lifeState" )) {
final int value = (Integer) e.getProperty( name ).getValue();
if (value == 1) {
//dies
}
else if (value == 2) {
//is dead
}
}
// System.out.println( e.getId() + "." + name + " " + oldValue + "->" + e.getProperty( name ).getValue() );
}
}
}
@Override
public void gameEvent( int eventType, int sourceName, int attackerEntity, int target, int value, int inflictor, float timeStamp ) {
// System.out.println( EVENT_TYPE.valueOf( eventType ) + " attacker: " + attackerEntity + " source: " + sourceName + " target: " + target );
}
}