153 lines
5.2 KiB
Java
153 lines
5.2 KiB
Java
/*
|
|
* Decompiled with CFR 0.152.
|
|
*
|
|
* Could not load the following classes:
|
|
* com.jme3.animation.AnimControl
|
|
* com.jme3.animation.LoopMode
|
|
* com.jme3.app.Application
|
|
* com.jme3.asset.AssetManager
|
|
* com.jme3.audio.AudioNode
|
|
* com.jme3.bullet.collision.shapes.CapsuleCollisionShape
|
|
* com.jme3.bullet.collision.shapes.CollisionShape
|
|
* com.jme3.bullet.control.BetterCharacterControl
|
|
* com.jme3.bullet.control.GhostControl
|
|
* com.jme3.effect.ParticleEmitter
|
|
* com.jme3.effect.ParticleMesh$Type
|
|
* com.jme3.material.Material
|
|
* com.jme3.math.ColorRGBA
|
|
* com.jme3.math.Vector3f
|
|
* com.jme3.scene.Spatial
|
|
* com.jme3.scene.control.Control
|
|
* tonegod.gui.core.Screen
|
|
*/
|
|
package mygame;
|
|
|
|
import com.jme3.animation.AnimControl;
|
|
import com.jme3.animation.LoopMode;
|
|
import com.jme3.app.Application;
|
|
import com.jme3.asset.AssetManager;
|
|
import com.jme3.audio.AudioNode;
|
|
import com.jme3.bullet.collision.shapes.CapsuleCollisionShape;
|
|
import com.jme3.bullet.collision.shapes.CollisionShape;
|
|
import com.jme3.bullet.control.BetterCharacterControl;
|
|
import com.jme3.bullet.control.GhostControl;
|
|
import com.jme3.effect.ParticleEmitter;
|
|
import com.jme3.effect.ParticleMesh;
|
|
import com.jme3.material.Material;
|
|
import com.jme3.math.ColorRGBA;
|
|
import com.jme3.math.Vector3f;
|
|
import com.jme3.scene.Spatial;
|
|
import com.jme3.scene.control.Control;
|
|
import mygame.Character;
|
|
import mygame.Exchange;
|
|
import mygame.WalkingEnemyControl;
|
|
import tonegod.gui.core.Screen;
|
|
|
|
public class WalkingEnemy
|
|
extends Character {
|
|
public BetterCharacterControl walkingEnemyControl;
|
|
public GhostControl ghost;
|
|
private WalkingEnemyControl control = new WalkingEnemyControl();
|
|
private float health;
|
|
private AssetManager assetManager;
|
|
public float reverseWalk;
|
|
public ParticleEmitter blood;
|
|
public boolean dead = false;
|
|
public float deadtimer = 0.0f;
|
|
|
|
public WalkingEnemy(String name) {
|
|
super(name);
|
|
this.addControl((Control)this.control);
|
|
}
|
|
|
|
public WalkingEnemy(String name, AssetManager am) {
|
|
super(name);
|
|
this.addControl((Control)this.control);
|
|
this.assetManager = am;
|
|
}
|
|
|
|
public void setupModelControl() {
|
|
this.modelAnimControl = (AnimControl)this.model.getControl(AnimControl.class);
|
|
this.modelAnimChannel = this.modelAnimControl.createChannel();
|
|
this.modelAnimChannel.setAnim("stand");
|
|
}
|
|
|
|
public void setupGUI() {
|
|
Screen screen = new Screen((Application)Exchange.app, "tonegod/gui/style/def/style_map.xml");
|
|
}
|
|
|
|
public void setModel(Spatial model) {
|
|
this.model = model;
|
|
this.setupModel();
|
|
this.setupControl();
|
|
this.setupModelControl();
|
|
this.wholeBody.attachChild(this.model);
|
|
this.blood = new ParticleEmitter("Emitter", ParticleMesh.Type.Triangle, 10);
|
|
Material mat_red = this.assetManager.loadMaterial("Materials/blood.j3m");
|
|
this.blood.setMaterial(mat_red);
|
|
this.blood.setImagesX(2);
|
|
this.blood.setImagesY(2);
|
|
this.blood.setEndColor(new ColorRGBA(1.0f, 0.0f, 0.0f, 0.75f));
|
|
this.blood.setStartColor(new ColorRGBA(1.0f, 0.0f, 0.0f, 0.25f));
|
|
this.blood.getParticleInfluencer().setInitialVelocity(new Vector3f(1.0f, 2.0f, 1.0f));
|
|
this.blood.setParticlesPerSec(0.0f);
|
|
this.blood.setStartSize(1.0f);
|
|
this.blood.setEndSize(1.0f);
|
|
this.blood.setGravity(0.0f, 2.0f, 0.0f);
|
|
this.blood.setLowLife(1.0f);
|
|
this.blood.setHighLife(0.5f);
|
|
this.blood.getParticleInfluencer().setVelocityVariation(0.3f);
|
|
this.blood.setRandomAngle(true);
|
|
this.blood.setSelectRandomImage(true);
|
|
this.attachChild((Spatial)this.blood);
|
|
}
|
|
|
|
void setupModel() {
|
|
this.model.setLocalScale(0.5f);
|
|
this.wholeBody.attachChild(this.model);
|
|
}
|
|
|
|
private void setupControl() {
|
|
this.walkingEnemyControl = new BetterCharacterControl(1.0f, 2.0f, 8.0f);
|
|
this.addControl((Control)this.walkingEnemyControl);
|
|
this.ghost = new GhostControl((CollisionShape)new CapsuleCollisionShape(1.0f, 0.5f));
|
|
this.ghost.addCollideWithGroup(1);
|
|
this.addControl((Control)this.ghost);
|
|
}
|
|
|
|
public float getHealth() {
|
|
return this.health;
|
|
}
|
|
|
|
public void setHealth(float health) {
|
|
this.health = health;
|
|
}
|
|
|
|
public void doDamage(float damage) {
|
|
this.health -= damage;
|
|
this.reverseWalk = 0.5f;
|
|
if (this.health <= 0.0f) {
|
|
this.die();
|
|
}
|
|
AudioNode hit = new AudioNode(this.assetManager, "Sounds/Effects/damage.ogg", false);
|
|
hit.setLooping(false);
|
|
hit.setVolume(100.0f);
|
|
this.getParent().attachChild((Spatial)hit);
|
|
hit.play();
|
|
this.blood.emitAllParticles();
|
|
}
|
|
|
|
public void die() {
|
|
this.modelAnimChannel.setAnim("die");
|
|
this.modelAnimChannel.setLoopMode(LoopMode.DontLoop);
|
|
this.ghost.setEnabled(false);
|
|
this.walkingEnemyControl.setEnabled(false);
|
|
AudioNode an = (AudioNode)this.getChild("walkingSound");
|
|
an.stop();
|
|
Exchange.removeEnemy(this);
|
|
Exchange.setKilled(Exchange.killed + 1);
|
|
Exchange.spawnItem(this.getLocalTranslation());
|
|
this.dead = true;
|
|
}
|
|
}
|