/* * Decompiled with CFR 0.152. * * Could not load the following classes: * com.jme3.animation.AnimChannel * com.jme3.animation.AnimControl * com.jme3.animation.AnimEventListener * com.jme3.animation.LoopMode * com.jme3.app.Application * com.jme3.app.SimpleApplication * com.jme3.app.state.AppState * com.jme3.audio.AudioNode * com.jme3.bullet.BulletAppState * com.jme3.bullet.collision.PhysicsCollisionEvent * com.jme3.bullet.collision.PhysicsCollisionListener * com.jme3.bullet.control.RigidBodyControl * com.jme3.collision.Collidable * com.jme3.collision.CollisionResults * com.jme3.input.controls.ActionListener * com.jme3.input.controls.AnalogListener * com.jme3.input.controls.InputListener * com.jme3.input.controls.KeyTrigger * com.jme3.input.controls.MouseButtonTrigger * com.jme3.input.controls.Trigger * com.jme3.light.AmbientLight * com.jme3.light.Light * com.jme3.math.ColorRGBA * com.jme3.math.Ray * com.jme3.math.Vector2f * com.jme3.math.Vector3f * com.jme3.post.Filter * com.jme3.post.FilterPostProcessor * com.jme3.post.SceneProcessor * com.jme3.post.filters.CartoonEdgeFilter * com.jme3.renderer.Caps * com.jme3.renderer.queue.RenderQueue$ShadowMode * com.jme3.scene.Spatial * com.jme3.scene.control.Control * com.jme3.shadow.DirectionalLightShadowFilter * com.jme3.shadow.DirectionalLightShadowRenderer * tonegod.gui.controls.extras.Indicator * tonegod.gui.controls.extras.Indicator$Orientation * tonegod.gui.controls.text.Label * tonegod.gui.core.Element * tonegod.gui.core.Screen * tonegod.gui.effects.Effect * tonegod.gui.effects.Effect$EffectEvent * tonegod.gui.effects.Effect$EffectType */ package jme3.hello; import com.jme3.animation.AnimChannel; import com.jme3.animation.AnimControl; import com.jme3.animation.AnimEventListener; import com.jme3.animation.LoopMode; import com.jme3.app.Application; import com.jme3.app.SimpleApplication; import com.jme3.app.state.AppState; import com.jme3.audio.AudioNode; import com.jme3.bullet.BulletAppState; import com.jme3.bullet.collision.PhysicsCollisionEvent; import com.jme3.bullet.collision.PhysicsCollisionListener; import com.jme3.bullet.control.RigidBodyControl; import com.jme3.collision.Collidable; import com.jme3.collision.CollisionResults; import com.jme3.input.controls.ActionListener; import com.jme3.input.controls.AnalogListener; import com.jme3.input.controls.InputListener; import com.jme3.input.controls.KeyTrigger; import com.jme3.input.controls.MouseButtonTrigger; import com.jme3.input.controls.Trigger; import com.jme3.light.AmbientLight; import com.jme3.light.Light; import com.jme3.math.ColorRGBA; import com.jme3.math.Ray; import com.jme3.math.Vector2f; import com.jme3.math.Vector3f; import com.jme3.post.Filter; import com.jme3.post.FilterPostProcessor; import com.jme3.post.SceneProcessor; import com.jme3.post.filters.CartoonEdgeFilter; import com.jme3.renderer.Caps; import com.jme3.renderer.queue.RenderQueue; import com.jme3.scene.Spatial; import com.jme3.scene.control.Control; import com.jme3.shadow.DirectionalLightShadowFilter; import com.jme3.shadow.DirectionalLightShadowRenderer; import java.util.Random; import mygame.Exchange; import mygame.Player; import mygame.Staff; import mygame.Sword; import mygame.WalkingEnemy; import tonegod.gui.controls.extras.Indicator; import tonegod.gui.controls.text.Label; import tonegod.gui.core.Element; import tonegod.gui.core.Screen; import tonegod.gui.effects.Effect; import wpq.tests.PlayerCam; public class TestCameraNode extends SimpleApplication implements AnalogListener, ActionListener, AnimEventListener, PhysicsCollisionListener { private Player player; Vector3f direction = new Vector3f(); private FilterPostProcessor fpp; private BulletAppState bulletAppState; Screen screen; Indicator ind1; Label spiderCounter; Label label; Indicator waveCounter; Indicator cooldownLeft; Indicator cooldownRight; Indicator skill2; Label gameover; int change = 0; private int winCount = 0; PlayerCam playerCam; private float spawnTimer; private float timer; boolean left = false; boolean right = false; boolean down = false; boolean up = false; Vector3f walkDirection = new Vector3f(Vector3f.ZERO); private DirectionalLightShadowRenderer dlsr; private DirectionalLightShadowFilter dlsf; private static int SPAWN_TIME = 10; private int spawns = 1; private boolean gameover_flag = false; public Exchange exchange; public static void main(String[] args) { TestCameraNode app = new TestCameraNode(); app.setDisplayFps(false); app.setDisplayStatView(false); app.start(); } public void simpleInitApp() { this.bulletAppState = new BulletAppState(); this.stateManager.attach((AppState)this.bulletAppState); this.exchange = new Exchange(); Exchange.setRootNode(this.rootNode); Exchange.setBulletAppState(this.bulletAppState); Exchange.setAssetManager(this.assetManager); Exchange.setViewPort(this.viewPort); Exchange.setApp(this); this.spawnTimer = 0.0f; this.timer = 0.0f; this.setupPlayer(); this.setupGround(); this.setupWalls(); this.setupCam(); this.setupLight(); this.registerInput(); this.setupFilters(); this.setupGUI(); } private void setupPlayer() { this.player = new Player("Player"); this.player.setHat(this.assetManager.loadModel("Models/helmet/helmet.j3o")); Staff staff = new Staff("Staff", this.assetManager, this.exchange); staff.setModel(this.assetManager.loadModel("Models/staff/staff.mesh.j3o")); this.player.setLeftHand(staff); Sword sword = new Sword("Sword", this.assetManager, this.exchange); sword.setModel(this.assetManager.loadModel("Models/sword/sword.mesh.j3o")); this.bulletAppState.getPhysicsSpace().add((Object)sword); this.player.setRightHand(sword); this.player.setModel(this.assetManager.loadModel("Models/blob/Blob.mesh.j3o")); this.bulletAppState.getPhysicsSpace().add((Object)this.player.playerControl); this.rootNode.attachChild((Spatial)this.player); this.bulletAppState.getPhysicsSpace().addCollisionListener((PhysicsCollisionListener)this); } private void setupSpider(Vector3f spawn) { WalkingEnemy walkingSpider = new WalkingEnemy("Spider", this.assetManager); walkingSpider.setLocalTranslation(spawn); walkingSpider.setModel(this.assetManager.loadModel("Models/spider/spider.mesh.j3o")); walkingSpider.modelAnimChannel.setAnim("walk"); walkingSpider.setHealth(100.0f); walkingSpider.modelAnimChannel.setLoopMode(LoopMode.Loop); Exchange.enemies.add(walkingSpider); AudioNode walksound = new AudioNode(this.assetManager, "Sounds/Effects/spiderwalking.ogg", false); walksound.setName("walkingSound"); walksound.setLooping(true); walksound.setVolume(2.0f); walkingSpider.attachChild((Spatial)walksound); walksound.play(); this.bulletAppState.getPhysicsSpace().add((Object)walkingSpider.ghost); this.bulletAppState.getPhysicsSpace().add((Object)walkingSpider.walkingEnemyControl); this.rootNode.attachChild((Spatial)walkingSpider); } private void spawnSpider() { Random r = new Random(); int spawnx = r.nextInt(81) - 40; int spawnz = r.nextInt(81) - 40; Vector3f spawnpoint = new Vector3f((float)spawnx, 0.0f, (float)spawnz); AudioNode spawnsound = new AudioNode(this.assetManager, "Sounds/Effects/spawn.ogg", false); spawnsound.setLooping(false); spawnsound.setPositional(true); spawnsound.setLocalTranslation(spawnpoint); spawnsound.setVolume(5.0f); this.rootNode.attachChild((Spatial)spawnsound); spawnsound.play(); this.setupSpider(spawnpoint); } private void setupGround() { int rotation_flag = 0; for (int x = -50; x < 50; x += 10) { for (int z = -50; z < 50; z += 10) { Spatial ground; if (rotation_flag == 5) { rotation_flag = 0; ground = this.assetManager.loadModel("Models/tile2/tile.mesh.j3o"); } else { ground = this.assetManager.loadModel("Models/tile1/tile.mesh.j3o"); ++rotation_flag; } ground.scale(5.0f); ground.setLocalTranslation((float)x, -1.0f, (float)z); RigidBodyControl ground_solid = new RigidBodyControl(0.0f); ground.addControl((Control)ground_solid); this.bulletAppState.getPhysicsSpace().add((Object)ground_solid); ground.setShadowMode(RenderQueue.ShadowMode.Receive); this.rootNode.attachChild(ground); } } } private void setupWalls() { float x; for (x = -60.0f; x < 60.0f; x += 10.0f) { this.createWall(x, 50.0f); this.createWall(x, -50.0f); } for (x = -60.0f; x < 60.0f; x += 10.0f) { this.createWall(50.0f, x); this.createWall(-50.0f, x); } } private void createWall(float x, float z) { Spatial wall = this.assetManager.loadModel("Models/wall1/wall1.mesh.j3o"); wall.scale(5.0f); wall.setLocalTranslation(x, 0.0f, z); RigidBodyControl wall_solid = new RigidBodyControl(0.0f); wall.addControl((Control)wall_solid); this.bulletAppState.getPhysicsSpace().add((Object)wall); wall.setShadowMode(RenderQueue.ShadowMode.CastAndReceive); this.rootNode.attachChild(wall); } private void setupCam() { this.playerCam = new PlayerCam(this.player, "CamNode", this.cam); this.playerCam.setupCamera(); this.flyCam.setEnabled(false); } private void setupLight() { AmbientLight al = new AmbientLight(); al.setColor(new ColorRGBA(0.6f, 0.6f, 0.9f, 1.0f)); this.rootNode.addLight((Light)al); } public void registerInput() { Trigger[] triggerArray = new Trigger[2]; triggerArray[0] = new KeyTrigger(200); triggerArray[1] = new KeyTrigger(17); this.inputManager.addMapping("moveForward", triggerArray); Trigger[] triggerArray2 = new Trigger[2]; triggerArray2[0] = new KeyTrigger(208); triggerArray2[1] = new KeyTrigger(31); this.inputManager.addMapping("moveBackward", triggerArray2); Trigger[] triggerArray3 = new Trigger[2]; triggerArray3[0] = new KeyTrigger(205); triggerArray3[1] = new KeyTrigger(32); this.inputManager.addMapping("moveRight", triggerArray3); Trigger[] triggerArray4 = new Trigger[2]; triggerArray4[0] = new KeyTrigger(203); triggerArray4[1] = new KeyTrigger(30); this.inputManager.addMapping("moveLeft", triggerArray4); this.inputManager.addMapping("rightHand", new Trigger[]{new MouseButtonTrigger(1)}); Trigger[] triggerArray5 = new Trigger[1]; triggerArray5[0] = new KeyTrigger(18); this.inputManager.addMapping("skill2", triggerArray5); this.inputManager.addMapping("leftHand", new Trigger[]{new MouseButtonTrigger(0)}); this.inputManager.addMapping("die", new Trigger[]{new MouseButtonTrigger(2)}); this.inputManager.addMapping("jump", new Trigger[]{new KeyTrigger(57)}); this.inputManager.addListener((InputListener)this, new String[]{"moveForward", "moveBackward", "moveRight", "moveLeft", "rightHand", "leftHand", "die", "jump", "skill2"}); } public void setupFilters() { if (this.renderer.getCaps().contains(Caps.GLSL100)) { this.fpp = new FilterPostProcessor(this.assetManager); CartoonEdgeFilter toon = new CartoonEdgeFilter(); toon.setEdgeColor(ColorRGBA.Black); this.fpp.addFilter((Filter)toon); this.viewPort.addProcessor((SceneProcessor)this.fpp); } } public void onAnalog(String name, float value, float tpf) { } public void onAction(String name, boolean keyPressed, float tpf) { try { if (name.equals("rightHand") && !keyPressed) { this.player.rightHand.skill1(); } if (name.equals("leftHand") && !keyPressed) { this.player.leftHand.skill1(); } } catch (NullPointerException e) { // empty catch block } if (name.equals("skill2") && !keyPressed) { this.player.leftHand.skill2(); } if (name.equals("die") && !keyPressed) { this.player.switchHands(); } if (name.equals("jump")) { this.player.playerControl.jump(); } if (name.equals("moveLeft")) { this.left = keyPressed; } else if (name.equals("moveRight")) { this.right = keyPressed; } else if (name.equals("moveForward")) { this.up = keyPressed; } else if (name.equals("moveBackward")) { this.down = keyPressed; } } public void setupGUI() { this.screen = new Screen((Application)this, "tonegod/gui/style/def/style_map.xml"); this.screen.initialize(); this.guiNode.addControl((Control)this.screen); this.ind1 = new Indicator(this.screen, "Healthbar", new Vector2f(10.0f, 10.0f), Indicator.Orientation.HORIZONTAL){ public void onChange(float arg0, float arg1) { } }; this.ind1.setMaxValue(100.0f); this.ind1.setCurrentValue(this.player.health); this.ind1.setIndicatorColor(ColorRGBA.Red); this.ind1.setDisplayPercentage(); this.screen.addElement((Element)this.ind1); this.cooldownLeft = new Indicator(this.screen, "cooldownLeft", new Vector2f(10.0f, (float)(this.settings.getHeight() - 30)), Indicator.Orientation.HORIZONTAL){ public void onChange(float arg0, float arg1) { } }; this.cooldownLeft.setMaxValue(100.0f); this.cooldownLeft.setCurrentValue(100.0f); this.cooldownLeft.setIndicatorColor(ColorRGBA.Blue); this.cooldownLeft.setText("Fireball"); this.screen.addElement((Element)this.cooldownLeft); this.cooldownRight = new Indicator(this.screen, "cooldownRight", new Vector2f(10.0f, (float)(this.settings.getHeight() - 70)), Indicator.Orientation.HORIZONTAL){ public void onChange(float arg0, float arg1) { } }; this.cooldownRight.setMaxValue(100.0f); this.cooldownRight.setCurrentValue(100.0f); this.cooldownRight.setIndicatorColor(ColorRGBA.Blue); this.cooldownRight.setText("Sword"); this.screen.addElement((Element)this.cooldownRight); this.skill2 = new Indicator(this.screen, "skill2", new Vector2f(10.0f, (float)(this.settings.getHeight() - 50)), Indicator.Orientation.HORIZONTAL){ public void onChange(float arg0, float arg1) { } }; this.skill2.setMaxValue(100.0f); this.skill2.setCurrentValue(100.0f); this.skill2.setIndicatorColor(ColorRGBA.Blue); this.skill2.setText("Teleport"); this.screen.addElement((Element)this.skill2); this.label = new Label(this.screen, "Timer", new Vector2f(10.0f, 50.0f), new Vector2f(200.0f, 100.0f)); this.label.setFontColor(ColorRGBA.Yellow); this.label.setFontSize(30.0f); this.screen.addElement((Element)this.label); this.waveCounter = new Indicator(this.screen, "waveCounter", new Vector2f(10.0f, 30.0f), Indicator.Orientation.HORIZONTAL){ public void onChange(float arg0, float arg1) { } }; this.waveCounter.setMaxValue((float)SPAWN_TIME); this.waveCounter.setCurrentValue((float)SPAWN_TIME - this.spawnTimer); this.waveCounter.setIndicatorColor(ColorRGBA.Yellow); this.waveCounter.setFontColor(ColorRGBA.Black); this.waveCounter.setText("next Wave in..."); this.screen.addElement((Element)this.waveCounter); this.spiderCounter = new Label(this.screen, "SpiderCounter", new Vector2f(10.0f, 30.0f), new Vector2f(200.0f, 100.0f)); this.spiderCounter.setFontColor(ColorRGBA.Yellow); this.spiderCounter.setFontSize(30.0f); this.screen.addElement((Element)this.spiderCounter); this.gameover = new Label(this.screen, "GameOver", new Vector2f(0.0f, 0.0f), new Vector2f((float)this.settings.getWidth(), 400.0f)); this.gameover.setFont("/Interface/Fonts/FleshWound.fnt"); this.gameover.setFontSize(100.0f); this.gameover.setFontColor(ColorRGBA.White); this.gameover.setText("Verloren!"); Effect ef = new Effect(Effect.EffectType.FadeIn, Effect.EffectEvent.Show, 2.0f); this.gameover.hide(); this.gameover.addEffect(Effect.EffectEvent.Show, ef); this.screen.addElement((Element)this.gameover); } public void reduceCooldowns(float tpf) { this.player.leftHand.reduceCooldowns(tpf); this.player.rightHand.reduceCooldowns(tpf); } public void simpleUpdate(float tpf) { this.reduceCooldowns(tpf); this.cooldownLeft.setCurrentValue(this.player.leftHand.cooldown1 * (this.cooldownLeft.getMaxValue() / this.player.leftHand.COOLDOWN1_TIME)); this.skill2.setCurrentValue(this.player.leftHand.cooldown2 * (this.skill2.getMaxValue() / this.player.leftHand.COOLDOWN2_TIME)); this.cooldownRight.setCurrentValue(this.player.rightHand.cooldown1 * (this.cooldownRight.getMaxValue() / this.player.rightHand.COOLDOWN1_TIME)); this.spiderCounter.setText("Kills: " + Exchange.killed); if (!this.gameover_flag) { CollisionResults results = new CollisionResults(); Vector2f click2d = this.inputManager.getCursorPosition(); Vector3f click3d = this.cam.getWorldCoordinates(new Vector2f(click2d.x, click2d.y), 0.0f).clone(); Vector3f dir = this.cam.getWorldCoordinates(new Vector2f(click2d.x, click2d.y), 1.0f).subtractLocal(click3d).normalizeLocal(); Ray ray = new Ray(click3d, dir); this.rootNode.collideWith((Collidable)ray, results); for (int i = 0; i < results.size(); ++i) { float dist = results.getCollision(i).getDistance(); Vector3f pt = results.getCollision(i).getContactPoint(); this.player.wholeBody.lookAt(pt, Vector3f.UNIT_Y); this.player.pt = pt; } Vector3f camDir = this.cam.getDirection().clone().multLocal(8.0f); Vector3f camLeft = this.cam.getLeft().clone().multLocal(8.0f); camDir.y = 0.0f; camLeft.y = 0.0f; this.walkDirection.set(0.0f, 0.0f, 0.0f); if (this.left) { this.walkDirection.addLocal(camLeft); } if (this.right) { this.walkDirection.addLocal(camLeft.negate()); } if (this.up) { this.walkDirection.addLocal(camDir); } if (this.down) { this.walkDirection.addLocal(camDir.negate()); } if (this.walkDirection.length() == 0.0f) { if ("walk".equals(this.player.modelAnimChannel.getAnimationName())) { this.player.modelAnimChannel.setAnim("stand", 1.0f); } } else if ("stand".equals(this.player.modelAnimChannel.getAnimationName())) { this.player.modelAnimChannel.setAnim("walk", 0.7f); } this.walkDirection.normalizeLocal().multLocal(7.5f); this.player.playerControl.setWalkDirection(this.walkDirection); this.ind1.setCurrentValue(this.player.health); if (this.player.health <= 0.0f) { this.player.die(); this.gameover.showWithEffect(); AudioNode gameover = new AudioNode(this.assetManager, "Sounds/Effects/gameover.ogg", false); gameover.setLooping(false); gameover.setVolume(5.0f); this.rootNode.attachChild((Spatial)gameover); gameover.play(); this.gameover_flag = true; } this.waveCounter.setCurrentValue((float)SPAWN_TIME - this.spawnTimer); this.spawnTimer += tpf; if (this.spawnTimer >= (float)SPAWN_TIME) { for (int spawn_counts = 0; spawn_counts < this.spawns; ++spawn_counts) { this.spawnSpider(); } ++this.spawns; this.spawnTimer = 0.0f; } this.label.setText("Wave No.:" + (this.spawns - 1)); } } public void onAnimCycleDone(AnimControl control, AnimChannel channel, String animName) { if (animName.equals("walk")) { channel.setAnim("stand", 0.1f); channel.setLoopMode(LoopMode.DontLoop); channel.setSpeed(1.0f); } if (animName.equals("skill1")) { channel.setAnim("normal", 0.1f); channel.setLoopMode(LoopMode.DontLoop); channel.setSpeed(1.0f); } } public void onAnimChange(AnimControl control, AnimChannel channel, String animName) { if (animName.equals("skill1")) { // empty if block } } public void collision(PhysicsCollisionEvent event) { try { if (event.getNodeA().getName().equals("Spider") && event.getNodeB().getName().equals("Player") || event.getNodeB().getName().equals("Spider") && event.getNodeA().getName().equals("Player")) { this.player.health -= 0.25f; } } catch (Exception exception) { // empty catch block } } }