@Override public boolean apply(Entity e) { return dtClassName.equals(e.getDtClass().getDtName()); } });
@Override public boolean apply(Object[] value) { Entity e = (Entity) value[0]; return p.matcher(e.getDtClass().getDtName()).matches(); } };
private void ensureFieldPathForEntityInitialized(Entity e) { Integer cid = e.getDtClass().getClassId(); if (!lifeStatePaths.containsKey(cid)) { lifeStatePaths.put(cid, e.getDtClass().getFieldPathForName("m_lifeState")); } }
private void ensureFieldPaths(Entity e) { if (mana == null) { mana = e.getDtClass().getFieldPathForName("m_flMana"); maxMana = e.getDtClass().getFieldPathForName("m_flMaxMana"); } }
private void ensureFieldPathForEntityInitialized(Entity e) { Integer cid = e.getDtClass().getClassId(); if (!lifeStatePaths.containsKey(cid)) { lifeStatePaths.put(cid, e.getDtClass().getFieldPathForName("m_lifeState")); } }
@Override public boolean apply(Object[] value) { Entity e = (Entity) value[0]; return p.matcher(e.getDtClass().getDtName()).matches(); } };
@Override public boolean apply(Entity e) { return dtClassName.equals(e.getDtClass().getDtName()); } });
private boolean isHero(Entity e) { return e.getDtClass().getDtName().startsWith("CDOTA_Unit_Hero"); }
private boolean isWard(Entity e) { return WARDS_DT_CLASSES.contains(e.getDtClass().getDtName()); }
@SuppressWarnings("unchecked") public <T> T getProperty(String property) { FieldPath fp = dtClass.getFieldPathForName(property); if (fp == null) { throw new IllegalArgumentException(String.format("property %s not found on entity of class %s", property, getDtClass().getDtName())); } return getPropertyForFieldPath(fp); }
@SuppressWarnings("unchecked") public <T> T getProperty(String property) { FieldPath fp = dtClass.getFieldPathForName(property); if (fp == null) { throw new IllegalArgumentException(String.format("property %s not found on entity of class %s", property, getDtClass().getDtName())); } return getPropertyForFieldPath(fp); }
@Override public V resolveValue(int index, int team, int pos) { String fieldPathString = pattern .replaceAll("%i", Util.arrayIdxToString(index)) .replaceAll("%t", Util.arrayIdxToString(team)) .replaceAll("%p", Util.arrayIdxToString(pos)); String compiledName = entityName.replaceAll("%n", getTeamName(team)); Entity entity = getEntity(compiledName); FieldPath fieldPath = entity.getDtClass().getFieldPathForName(fieldPathString); return entity.getPropertyForFieldPath(fieldPath); } }
@OnEntityPropertyChanged(classPattern = "CDOTA_Unit_Hero_.*", propertyPattern = "m_lifeState") public void onEntityPropertyChanged(Context ctx, Entity e, FieldPath fp) { System.out.format( "%6d %s: %s = %s\n", ctx.getTick(), e.getDtClass().getDtName(), e.getDtClass().getNameForFieldPath(fp), e.getPropertyForFieldPath(fp) ); }
@OnEntitySpawned public void onSpawned(Entity e) { System.out.printf("%06d: %s at index %d has spawned\n", ctx.getTick(), e.getDtClass().getDtName(), e.getIndex()); }
@OnEntityDied public void onDied(Entity e) { System.out.printf("%06d: %s at index %d has died\n", ctx.getTick(), e.getDtClass().getDtName(), e.getIndex()); }
@OnEntityCreated public void onCreated(Entity e) { FieldPath fp = e.getDtClass().getFieldPathForName("CBodyComponent.m_hModel"); if (fp == null) { return; } Long resourceHandle = e.getPropertyForFieldPath(fp); if (resourceHandle == null || resourceHandle == 0L) { return; } Resources.Entry entry = resources.getEntryForResourceHandle(resourceHandle); System.out.format("model for entity at %d (%d): %s\n", e.getIndex(), resourceHandle, entry); }
@OnEntityCreated public void onCreated(Entity e) { if (!isHero(e)) { return; } ensureFieldPaths(e); System.out.format("%s (%s/%s)\n", e.getDtClass().getDtName(), e.getPropertyForFieldPath(mana), e.getPropertyForFieldPath(maxMana)); }
@OnEntityCreated @Order(1000) public void onEntityCreated(Entity e) { List<FieldPath> fieldPaths = e.getDtClass().collectFieldPaths(e.getState()); for (FieldPath fp : fieldPaths) { evPropertyChanged.raise(e, fp); } }
@OnEntityCreated @Order(1000) public void onEntityCreated(Entity e) { List<FieldPath> fieldPaths = e.getDtClass().collectFieldPaths(e.getState()); for (FieldPath fp : fieldPaths) { evPropertyChanged.raise(e, fp); } }
private void logUpdateEnt(DotaUserMessages.CDOTAUserMsg_ParticleManager message) { int entityHandle = message.getUpdateParticleEnt().getEntityHandle(); Entity parent = entities.getByHandle(entityHandle); log.info("{} {} [index={}, entity={}({}), controlPoint={}, attachmentType={}, attachment={}, includeWearables={}]", getTick(), "PARTICLE_UPDATE_ENT", message.getIndex(), entityHandle, parent == null ? "NOT_FOUND" : parent.getDtClass().getDtName(), message.getUpdateParticleEnt().getControlPoint(), ParticleAttachmentType.forId(message.getUpdateParticleEnt().getAttachType()), message.getUpdateParticleEnt().getAttachment(), message.getUpdateParticleEnt().getIncludeWearables() ); //log.info(message.toString()); }