Add game source, converter pipeline, and web port
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user