From f3139f8121fe7e26aed37c9585cf4b5b49dd4f59 Mon Sep 17 00:00:00 2001 From: kendo89 <38090215+kendo89@users.noreply.github.com> Date: Wed, 16 May 2018 19:37:50 -0700 Subject: [PATCH 1/3] Change sound file to background sound --- a3/MyGame.java | 132 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 107 insertions(+), 25 deletions(-) diff --git a/a3/MyGame.java b/a3/MyGame.java index 26400b3..c83564d 100644 --- a/a3/MyGame.java +++ b/a3/MyGame.java @@ -24,12 +24,15 @@ import java.awt.geom.*; import javax.script.*; +import java.util.Scanner; // get user input from command line + import myGameEngine.*; import java.net.InetAddress; import ray.networking.IGameConnection.ProtocolType; // import networking import java.util.Iterator; + import java.util.UUID; // import networking import java.io.IOException; // import networking import java.net.InetAddress; // import networking @@ -45,13 +48,22 @@ import ray.audio.*; // import audio import com.jogamp.openal.ALFactory; // import audio +import javax.script.ScriptEngine; // import script +import javax.script.ScriptEngineFactory; // import script +import javax.script.ScriptEngineManager; // import script +import javax.script.ScriptException; // import script + + class MyGame extends VariableFrameRateGame { private static MyGame game; - public static String MAP_TEXTURE_SCRIPT = "scripts\\map_texture.js"; - public static String MAP_FILE_SCRIPT = "scripts\\map_file.js"; + public static String MAP_TEXTURE_SCRIPT = "scripts\\map_texture.js"; // script for map texture + public static String MAP_FILE_SCRIPT = "scripts\\map_file.js"; // script for map file + public static String CONFIG_SCRIPT = "scripts\\config.js"; // script for configuration + String configScript; // script after reading + private Player player; private OrbitCameraController orbitCamera; private Camera cam; @@ -67,13 +79,9 @@ class MyGame extends VariableFrameRateGame { private MoveRightAction dMoveR; private YawLeftAction dYawL; private YawRightAction dYawR; + + //May not need this because we have OrbitCameraController. //private Camera3PController orbitController, orbitController2; - private MoveForwardAction eMoveF; - private MoveBackwardAction eMoveB; - private MoveLeftAction eMoveL; - private MoveRightAction eMoveR; - private YawLeftAction eYawL; - private YawRightAction eYawR; private String serverAddress; // network private int serverPort; // network @@ -81,6 +89,8 @@ class MyGame extends VariableFrameRateGame { private ProtocolClient protClient; // network private boolean isClientConnected; // network private Vector gameObjectsToRemove; // network + private Vector ghostAvatarList; //network + private Vector ghostNPCList; //AI private SceneNode earthNode, coneNode, groundNode; // physics private SceneNode cameraPositionNode; // physics @@ -95,8 +105,15 @@ class MyGame extends VariableFrameRateGame { private SceneNode robotNode; // set to gloabl for sound - IAudioManager audioMgr; // sound - Sound oceanSound, hereSound; // sound + private IAudioManager audioMgr; // sound + private Sound oceanSound, hereSound; // sound + + private int maxscore; // maxscore read from JavaScript file + private int p1Score = 0; // score for Player 1 + private int p2Score = 0; // score for Player 2 + + private GL4RenderSystem rs; // HUD + private String elapsTimeStr, dispStr; // HUD //I'll leave this static because I wouldn't want two MyGames public static MyGame getGame() { @@ -113,7 +130,13 @@ protected MyGame(String serverAddr, int sPort) { public static void main(String[] args) { //game = new MyGame(args[0], Integer.parseInt(args[1])); //Needs to have assets and a3 in the same directory. - game = new MyGame("130.86.65.78", 8000); + + System.out.print("Enter Networking Server IP Address: "); +/* Scanner in = new Scanner (System.in); // input IP address + game = new MyGame(in.next(), 8000); +*/ game = new MyGame("130.86.65.78", 8000); // hardcored IP + + //Client client; try { game.startup(); @@ -141,6 +164,8 @@ public static void setPlayerNode(SceneNode node) { @Override protected void setupWindow(RenderSystem rs, GraphicsEnvironment ge) { rs.createRenderWindow(new DisplayMode(1000, 700, 24, 60), false); + //rs.createRenderWindow(new DisplayMode(1000, 700, 24, 60), true); + //rs.createRenderWindow(true); } @Override @@ -159,31 +184,68 @@ protected void setupCameras(SceneManager sm, RenderWindow rw) { protected void setupScene(Engine eng, SceneManager sm) throws IOException { setupNetworking(); im = new GenericInputManager(); //Initializing input manager for controllers + + // Java Script + ScriptEngineManager factory = new ScriptEngineManager(); + ScriptEngine jsEngine = factory.getEngineByName("js"); this.sm = sm; - ScriptEngineManager factory = new ScriptEngineManager(); - ScriptEngine jsEngine = factory.getEngineByName("js"); - sm.getAmbientLight().setIntensity(new Color(0.5f, 0.5f, 0.5f)); + + // ambient light + //sm.getAmbientLight().setIntensity(new Color(0.5f, 0.5f, 0.5f)); + sm.getAmbientLight().setIntensity(new Color(.1f, .1f, .1f)); + + // Positional Light + Light plight = sm.createLight("testLamp1", Light.Type.POINT); + plight.setAmbient(new Color(.3f, .3f, .3f)); + plight.setDiffuse(new Color(.7f, .7f, .7f)); + plight.setSpecular(new Color(1.0f, 1.0f, 1.0f)); + plight.setRange(5f); + SceneNode plightNode = sm.getRootSceneNode().createChildSceneNode("plightNode"); + plightNode.attachObject(plight); + + // Spot Light + Light spotLight = sm.createLight("spotLight", Light.Type.SPOT); + spotLight.setAmbient(new Color(.4f, .3f, .5f)); + spotLight.setDiffuse(new Color(.7f, .3f, .5f)); + spotLight.setSpecular(new Color(1.0f, 1.0f, 1.0f)); + spotLight.setRange(3f); + SceneNode spotLightNode = sm.getRootSceneNode().createChildSceneNode("spotLightNode"); + spotLightNode.attachObject(spotLight); + SceneNode cameraNode = sm.getRootSceneNode().createChildSceneNode("CameraNode"); cameraNode.attachObject(cam); +// LightManager lightMggr = new LightManager(this); +// lightMgr.putLightSpotFocusOnNode(sm.getSceneNode("hatoflifeNode"), "L1", new Color(75,72,25)); +// LightMgr.putLightSpotFocusOnNode(sm.getSceneNode("hatofLifeNode"), "L2", new Color(255, 55, 35)); + //Initialize Player player = new Player(sm); + + // Load map map = new Map(eng, sm, readScript(jsEngine, MAP_FILE_SCRIPT), readScript(jsEngine, MAP_TEXTURE_SCRIPT)); + // Load configuration file + configScript = readScript(jsEngine, CONFIG_SCRIPT); + maxscore = (int) jsEngine.get("maxscore"); + System.out.println("MAXSCORE: " + maxscore); // print to command line the maxscore + + //Initialize Orbit Camera orbitCamera = new OrbitCameraController(cameraNode, player.getNode(), cam); setupSkybox(eng, sm); //Initializing actions and connecting to nodes. - SceneNode playerN = sm.getSceneNode("playerNode"); - dMoveF = new MoveForwardAction(playerN); - dMoveB = new MoveBackwardAction(playerN); - dMoveL = new MoveLeftAction(playerN); - dMoveR = new MoveRightAction(playerN); - dYawL = new YawLeftAction(playerN); - dYawR = new YawRightAction(playerN); + //SceneNode playerN = sm.getSceneNode("playerNode"); + + dMoveF = new MoveForwardAction(playerNode, protClient); + dMoveB = new MoveBackwardAction(playerNode, protClient); + dMoveL = new MoveLeftAction(playerNode, protClient); + dMoveR = new MoveRightAction(playerNode, protClient); + dYawL = new YawLeftAction(playerNode, protClient); + dYawR = new YawRightAction(playerNode, protClient); setupInputs(sm); //Creating the sea @@ -398,6 +460,13 @@ protected void update(Engine engine) { hereSound.setLocation(robotNode.getWorldPosition()); oceanSound.setLocation(earthNode.getWorldPosition()); setEarParameters(sm); + + // build and set HUD + rs = (GL4RenderSystem) engine.getRenderSystem(); + elapsTimeStr = Integer.toString(Math.round(seconds)); + dispStr = "Time = " + elapsTimeStr + " P1 Score: " + Integer.toString(p1Score) + + " P2 Score: " + Integer.toString(p2Score); + rs.setHUD(dispStr, 15, 15); } @@ -408,6 +477,8 @@ public void setIsConnected(boolean b) { private void setupNetworking() { gameObjectsToRemove = new Vector(); + ghostAvatarList = new Vector(); + ghostNPCList = new Vector(); isClientConnected = false; System.out.println("Setting up networking...\n"); try { @@ -446,7 +517,8 @@ public int getNumGhosts() { } public void addGhostAvatarToGameWorld(GhostAvatar avatar) throws IOException { - if (avatar != null) { + if (avatar != null) { + System.out.println("Don't forget to increment the ghost entity name"); Entity ghostE = sm.createEntity("ghost", "dolphinHighPoly.obj"); ghostE.setPrimitive(Primitive.TRIANGLES); SceneNode ghostN = sm.getRootSceneNode(). @@ -455,14 +527,15 @@ public void addGhostAvatarToGameWorld(GhostAvatar avatar) throws IOException { ghostN.setLocalPosition(avatar.getPosition()); avatar.setNode(ghostN); avatar.setEntity(ghostE); + ghostAvatarList.add(avatar); //avatar.setPosition(node’s position... maybe redundant); } } public void addGhostNPCtoGameWorld(GhostNPC npc) throws IOException { - //Has a problem with id. Should it be an int or an UUID? Prof code has as an int. + System.out.println("Adding GhostNPC to Game World."); if (npc != null) { - Entity ghostE = sm.createEntity("ghost", "dolphinHighPoly.obj"); + Entity ghostE = sm.createEntity("ghostNPC", "dolphinHighPoly.obj"); ghostE.setPrimitive(Primitive.TRIANGLES); SceneNode ghostN = sm.getRootSceneNode(). createChildSceneNode(Integer.toString(npc.getID())); @@ -478,6 +551,15 @@ public void removeGhostAvatarFromGameWorld(GhostAvatar avatar) { if(avatar != null) gameObjectsToRemove.add(avatar.getID()); } + public GhostAvatar getGhostAvatarByID(UUID ghostID) throws Exception { + for(GhostAvatar ghost: this.ghostAvatarList) { + if(ghost.getID().compareTo(ghostID) == 0) { + return ghost; + } + } + throw new Exception("Could not find the Ghost by ID"); //Should create own classes for exception later. + } + private void initPhysicsSystem() { String engine = "ray.physics.JBullet.JBulletPhysicsEngine"; float[] gravity = {0, -3f, 0}; @@ -558,7 +640,7 @@ public void initAudio(SceneManager sm) { System.out.println("Audio Manager failed to initialize!"); return; } - resource1 = audioMgr.createAudioResource("Cartoon Hop-SoundBible.com-553158131.wav",AudioResourceType.AUDIO_SAMPLE); + resource1 = audioMgr.createAudioResource("Civil War Drummer -SoundBible.com-700036269.wav",AudioResourceType.AUDIO_SAMPLE); resource2 = audioMgr.createAudioResource("Water Splash-SoundBible.com-800223477.wav",AudioResourceType.AUDIO_SAMPLE); hereSound = new Sound(resource1,SoundType.SOUND_EFFECT, 100, true); oceanSound = new Sound(resource2,SoundType.SOUND_EFFECT, 100, true); From 502a053052d0ab88cbb8570557a90906c8818082 Mon Sep 17 00:00:00 2001 From: Ken Do Date: Thu, 17 May 2018 22:48:31 -0700 Subject: [PATCH 2/3] Toggle sound On & Off. press O --- a3/AvatarNear.class | Bin 0 -> 756 bytes a3/GetBig.class | Bin 0 -> 605 bytes a3/GetSmall.class | Bin 0 -> 614 bytes a3/GoWalk.class | Bin 0 -> 606 bytes a3/OneSecPassed.class | Bin 0 -> 1005 bytes myGameEngine/MoveBackwardAction.class | Bin 0 -> 2016 bytes myGameEngine/MoveForwardAction.class | Bin 0 -> 1836 bytes myGameEngine/MoveLeftAction.class | Bin 0 -> 1841 bytes myGameEngine/MoveRightAction.class | Bin 0 -> 1852 bytes myGameEngine/PitchForwardAction.class | Bin 0 -> 962 bytes myGameEngine/YawLeftAction.class | Bin 0 -> 1398 bytes myGameEngine/YawRightAction.class | Bin 0 -> 1407 bytes 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 a3/AvatarNear.class create mode 100644 a3/GetBig.class create mode 100644 a3/GetSmall.class create mode 100644 a3/GoWalk.class create mode 100644 a3/OneSecPassed.class create mode 100644 myGameEngine/MoveBackwardAction.class create mode 100644 myGameEngine/MoveForwardAction.class create mode 100644 myGameEngine/MoveLeftAction.class create mode 100644 myGameEngine/MoveRightAction.class create mode 100644 myGameEngine/PitchForwardAction.class create mode 100644 myGameEngine/YawLeftAction.class create mode 100644 myGameEngine/YawRightAction.class diff --git a/a3/AvatarNear.class b/a3/AvatarNear.class new file mode 100644 index 0000000000000000000000000000000000000000..24ad064c3ca2ed4b52592e89ab9c418c84ccc42a GIT binary patch literal 756 zcmZWm+iuf95IyU-aq75r+BD`4Ewqrh7bDR(E)oQVmny2%l83x)oK>=|>#a6!1pmYf z5-Ac7d;lMXm|cQOL6*F;XU>^9GyCJ`x9-G{fov>EH1)ab$t_Zx5d{xcPaS&U4+vcB=A1 zt1J_mawWQSS%8VVmJgaN9k5zr)j5!5@t z0?H;@3*ez*qA0*3e1`Bq=AwIXHW2!l4>Dn#s+4CvuBExpLAMyoiD6&c5IJUqG8%%> zA}WRIiV-iU2IO+-Fy8%0Oyt4FZ%o{tu` zJ;cA|*VY(d2OA94ktocgbuvC;@Q>7mPDMwWfx@e5dnbI#u|e~f=-Eqf%wi~V%v$V8 zOR*}%iQ|~750s~ literal 0 HcmV?d00001 diff --git a/a3/GetBig.class b/a3/GetBig.class new file mode 100644 index 0000000000000000000000000000000000000000..cbc2cec81a5764b17615c17878accfa43af9d342 GIT binary patch literal 605 zcmaix%TB^T6o&sPh1v_?{f;PV0-D%`?ldOSh%SgRDY7*KOkfO9Qi_RhrN&F*!Uyo7 zjHfLcH^#+W&YAOn^PicI&$o8~2iVr2Fz9^WJ`+J%wl$~>IiKIzT-puM;kVNB17C=t zU9O!p1L^e{68%AwVWLW^i%aK_A$27CGB{>1i{Hsook4ZHmN1ZjX+eWU!eXhegCS!f zi4;S&D*NJM)N2U8#v5J1FkSVUyj$nK4C8T94LWj2@Q@wbq&pcINsR_A9+0e1tdy#M zxOM{`jE08>7O@b*y4dL+uErFmDIy(ah)SP>ShA^8qozICPlVpfQgJLl$1i^TdDDqxbOjd zDB~#?2?`H-CmO+QXyUS+A1=HPi0s7XN1a5les#BYPl_;BLu^Q29t!@Ts;bg zxQRK084?xQ71cqfA-o!IID#Qrahu$!b592GB&qss*=L9a?5R<@m64V3px5F)2{YMp zt}?^7?Q?(7FX~vqnub+Ujh&lV4_rm=Ce25&iERyAvnMbnnMh-YK`&k1+BcSUVcQJp ze=eul2#5FjqE(X}^2^Euu-$>z6lEE79-DS{bkBzzyELW{JraWw%!*D5oi#*gjZ##m zSfO3dztea4irCYrCP8a_q>Ms^PPGQ+DVG{oV*yEuNQXtD(i>q3%M+$Wd%!gEFNnP% g^^A>23KaxUee^3%77~Ae#xKwy%NYVN?2R=0KXM>rOI-3>>3Y5= z#GqVl?6-aC_81bqew!gxC)M$ZU13P>%AWN17|h~#veaZyZMP!~Bw$+5V3Dv`YU*G} zTNpu-Aybz&` z`X8pgtsz>L}scj!P4nzK* ztI4|P^8P?{8uEtRvKj##H}Kk`Cd01HxT~!ze#@~!50s$KVNk+XqMbr}4Jn#+ifR-q zv>F?)G&Y|x`ViG*Xii5;9V!f}H8DoHTwINDWGNyYCWuPEgGo#cnKrE<)7*H%=nHa> fn7^k`K?pUXqcmB_`~sRkK$9#N2*9u!Y1X~~ptp1> literal 0 HcmV?d00001 diff --git a/a3/OneSecPassed.class b/a3/OneSecPassed.class new file mode 100644 index 0000000000000000000000000000000000000000..bec18e46a75996547098aa2854436d0c11a99c01 GIT binary patch literal 1005 zcmZ`$ZBNrs6n<`7Ru~1gF<2%uQn?E;}2 z=s-%|@&aR#JeVn)X_8PT@Tz-> zda2PlXnsboIem$&Idh4A^9u$pG5Rs?yCv&14b-Kfmp0c&{|p9@#TaGH_5_UMHbwI7 z1R=BdRv>I8zD;5(#=3*M3HCYl$=U*enV&E!&U5#?jmcc`&3hCm(SLW1{ecYDDt~$_f#A jilv0sBAt?!!am4Lcy8@=wQJcK@^bGYPhtism1Fg8N#G)mBOk-{bkd5VkZW^w_%TY`PUg zLNYH*JiTgYjj}<{1+j{^tb}mgbNw~TG#p>TU|yfswkdGSuGJD!7oRAjnKpB!hniC zL?v{k(#2j#h^gqtHE|kJ5rHaBFQ`z^BTh*by$DO_&y(HFeY<3MkMxp7f}(l1tXoCh zGsV3vl>I%EU!2JQPg3|%*$H@70-j1W5>=;A+$7v>{k=0sSN*WBZg{({XP+i>JeA8k zhOgE116`}KL>lc1SU+Iivgu+3FC(oW#s6NFYZVzxOSn-r{Ku|mRUW#&E{cj-Po-P= zu`O*w_dWC3d{)6Mbpv1L(p~xFJ0OfX+*R<(h4&&8?t1gPD(11k8Yz2*?i)GJwV8@k zE|)tG&{oZcF@x7sypA_WmA!AV`li}t!hok*o$ThYs3MCc()=vQeNG@+R`GTqYl_>7 ziq+uubp-Dsr(j(|Lj0y<9#q`JdxWjm>sB-8dS%u`uYfI(7v-hNKf;3G4^-r_Awjh- zbSBZKsML!sJW#MrQi3E|x>MB(&4zE-DjuRhpzc2Z7|#dKrpq=n9lzj{DLdPP4_TLN zc+;tlm)boa#$!BD@DUT#!A8XnK9-==g&T`mjHgAbkevR8;Z($Y+Atao&K0&^hun!))xGK*6P0TnSu>;0D`c`% zF+I_c|E)ZBSvNaEWM<&(@f0zq9nIQ_JGX5=@6xuf;FHx2z20u_aKYWDvz#f~fB5pG zy(1XM1gAz9=d+BE7%V)6#4rhVj*?*KnBm?<%|2Y`+RxiJfj*GT{EQo!=|c==W)2b0 z%pPJm6PFK>_#v+y;+vTfzxuHY1VfonN3W%Ciai2(O-C zZn2vR@kI9#-W1DQVtFSLi5z21!S}c>%%k^@@qP$DVl(>a2t|s9TV6kraD*=euU$kB z4m**baUz%?%3H)fi4?J|5nYbW`~Yb@p_Ym1;E&5Kq-TGuVHeflk2UO3D?~3EYIsWj fW4H|qHd#qAmIIgE)fw#?LVtnNNWz!Ah2Z@I+`ZBF literal 0 HcmV?d00001 diff --git a/myGameEngine/MoveForwardAction.class b/myGameEngine/MoveForwardAction.class new file mode 100644 index 0000000000000000000000000000000000000000..f4cecd85863a49b955501d3095c5ce897dfe8c81 GIT binary patch literal 1836 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 literal 0 HcmV?d00001 diff --git a/myGameEngine/YawLeftAction.class b/myGameEngine/YawLeftAction.class new file mode 100644 index 0000000000000000000000000000000000000000..60e011a3f7a1d049a1260a106304293119de313c GIT binary patch literal 1398 zcmaJ=*>V#{6g@2sj4j3iWXX=@1+z=TGVFwi0LEBA)v#2FauvL_hPD_pix`ce^p@}7 zFQ9OMJmdpX$uFgHx<^1!W%Dw9`}Xa7PM>?`@BjY%3&17Zvr!Ug#G|`1R%=N=OqBOj zzVX#Yz7phNn%J-ej%9M>g~?zm_oT^sE4^W!F}|;pMWw(*EW_ks`dqQ2udigXue@QP z*tDy^`m8Nb8Dwd`8igv!1*Uy@(R<898l+K?WXayai_!2=A|RgW`bdsc_LwPwdDB@R zhr!U(Ij)a-n<~ilz3X8T<~IcV=I#uB&|wEM&sysO)+(u2P{u(AQ>Y4*o2~Up2-FSs!AI5>sV99xhnnX68g#?-0VX%!RsR@dH# zvp8qNqh!0;#ld-8pxh(*hN6v!$`&h0KT@PJNfTeOaarJip&QAh?{!DRT*VHq;ul^` zw`jAvZ;r#1UJH}Fo0D7Ip1`jxpy4aHjvF?9qaSyub8r*41nhyn8qt;YX3?%d%bD(z z3#TBn{y7e$Q-tUBEPtS+z*IMv!OI77Fm^ztn{H)+>V(E4-~EYaH8C8ftIGU!EtItJ z7?rfy%u1`7l{VyBX5|!q;&(rHznglX;eNyc_tZ9~-P7BsyJxmB>(;Gp%)K*r=lN}z zzExsO)4nzKs56?u9A>e=^Gih5Rf|~Ss-r`^AxyMP?2?HNla*%Lz!CDY44b24HW6zq zp4GmvscSZ~?&5bmW(>|8D;wl7PaX^8v1mBB#r>}wYS74;!7x z{2l%aC%(!8GyYa5%SwTnL`LcT>_;Wg_Vtxq zhRPcUid_f#tIv7@wNaiG8*!x4LZIQx>)t~qvLK7gBukEtwkP8UsepK_>ti`l`9r2i z)^yg#Q84y&j_ZTrjtUBW?{<_%#T@~^b1;KLI_yK{ad%6=+935BsyOLj4t0TQr@J)^ zfu@5aII5$02gl&(=tBoKW^~kcFpHYNai7ZG-%W-p|6UGb3RL&AK*n1#kMw?;w2JMB zPh9a283-R~rAA}hXf)iRNFyfoPT*Sk?)~*S=yh`=l|RYyF+^ z_>5PxUHYu$o8u^>*`l-<6y%olX7IVdEG@rgJYU0Y+_CWmZMjdigD>%wfIZR;Vw$tn zDVvs<1=ArJaTYQUuW&5=GQ29Ve3+gBbAv(#KYb@hQzO&{*=`=Fex$9^c>j;QteN37 z-Bsm3Y@wnJ$f%-CXI5Iyth6K7Dl6yk0l&w&`^D4)ZTA&UxEJ=&a4+tmi1dS=lC!CGuD%j}^ngE$_eO(1b?T9GcW<#&BpF zWUa#)oSh>7%oELO)%^{Nzv3j9M*ZAtoc|q{DtLkG^;<8|(^^!C2xt|+-Zp!*aE^HA g4gOl$ Date: Thu, 17 May 2018 23:07:24 -0700 Subject: [PATCH 3/3] Toggle Sound on & Off --- a3/MyGame.java | 102 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 81 insertions(+), 21 deletions(-) diff --git a/a3/MyGame.java b/a3/MyGame.java index c83564d..aa2a85e 100644 --- a/a3/MyGame.java +++ b/a3/MyGame.java @@ -107,7 +107,8 @@ class MyGame extends VariableFrameRateGame { private IAudioManager audioMgr; // sound private Sound oceanSound, hereSound; // sound - + private boolean soundToggle = true; // sound PRESS 'O' to enable and disable sound + private int maxscore; // maxscore read from JavaScript file private int p1Score = 0; // score for Player 1 private int p2Score = 0; // score for Player 2 @@ -184,6 +185,9 @@ protected void setupCameras(SceneManager sm, RenderWindow rw) { protected void setupScene(Engine eng, SceneManager sm) throws IOException { setupNetworking(); im = new GenericInputManager(); //Initializing input manager for controllers + + //Activate physics + running = false; // Java Script ScriptEngineManager factory = new ScriptEngineManager(); @@ -237,17 +241,6 @@ protected void setupScene(Engine eng, SceneManager sm) throws IOException { orbitCamera = new OrbitCameraController(cameraNode, player.getNode(), cam); setupSkybox(eng, sm); - //Initializing actions and connecting to nodes. - //SceneNode playerN = sm.getSceneNode("playerNode"); - - dMoveF = new MoveForwardAction(playerNode, protClient); - dMoveB = new MoveBackwardAction(playerNode, protClient); - dMoveL = new MoveLeftAction(playerNode, protClient); - dMoveR = new MoveRightAction(playerNode, protClient); - dYawL = new YawLeftAction(playerNode, protClient); - dYawR = new YawRightAction(playerNode, protClient); - setupInputs(sm); - //Creating the sea /*ManualObject sea = ManualGraphics.makePlane("default.mtl", "default.png", Color.BLUE); SceneNode seaNode = sm.getRootSceneNode().createChildSceneNode("SeaNode"); @@ -326,7 +319,27 @@ protected void setupScene(Engine eng, SceneManager sm) throws IOException { groundNode.setLocalPosition(0, 0, 0); // set ground to xyz to 0 initPhysicsSystem(); createRagePhysicsWorld(); - + + //Initializing actions and connecting to nodes. + if(running == true) { + dMoveF = new MoveForwardAction(playerNode, playerPhysObj, protClient, running); + dMoveB = new MoveBackwardAction(playerNode, playerPhysObj, protClient, running); + dMoveL = new MoveLeftAction(playerNode, playerPhysObj, protClient, running); + dMoveR = new MoveRightAction(playerNode, playerPhysObj, protClient, running); + dYawL = new YawLeftAction(playerNode, playerPhysObj, protClient, running); + dYawR = new YawRightAction(playerNode, playerPhysObj, protClient, running); + setupInputs(sm); + } + + if(running == false) { + dMoveF = new MoveForwardAction(playerNode, playerPhysObj, protClient, running); + dMoveB = new MoveBackwardAction(playerNode, playerPhysObj, protClient, running); + dMoveL = new MoveLeftAction(playerNode, playerPhysObj, protClient, running); + dMoveR = new MoveRightAction(playerNode, playerPhysObj, protClient, running); + dYawL = new YawLeftAction(playerNode, playerPhysObj, protClient, running); + dYawR = new YawRightAction(playerNode, playerPhysObj, protClient, running); + setupInputs(sm); + } System.out.println("Press P to start the physics engine!"); initAudio(sm); // SOUND @@ -457,9 +470,11 @@ protected void update(Engine engine) { } // sound - hereSound.setLocation(robotNode.getWorldPosition()); - oceanSound.setLocation(earthNode.getWorldPosition()); - setEarParameters(sm); + if (soundToggle) { + hereSound.setLocation(robotNode.getWorldPosition()); + oceanSound.setLocation(earthNode.getWorldPosition()); + setEarParameters(sm); + } // build and set HUD rs = (GL4RenderSystem) engine.getRenderSystem(); @@ -534,8 +549,9 @@ public void addGhostAvatarToGameWorld(GhostAvatar avatar) throws IOException { public void addGhostNPCtoGameWorld(GhostNPC npc) throws IOException { System.out.println("Adding GhostNPC to Game World."); - if (npc != null) { - Entity ghostE = sm.createEntity("ghostNPC", "dolphinHighPoly.obj"); + if (npc != null) { + + Entity ghostE = sm.createEntity("ghostNPC" + npc.getID(), "dolphinHighPoly.obj"); ghostE.setPrimitive(Primitive.TRIANGLES); SceneNode ghostN = sm.getRootSceneNode(). createChildSceneNode(Integer.toString(npc.getID())); @@ -573,12 +589,12 @@ private void createRagePhysicsWorld() { float up[] = {0,1,0}; double[] temptf; - /*System.out.println("Adding player Physics"); + System.out.println("Adding player Physics"); temptf = toDoubleArray(playerNode.getLocalTransform().toFloatArray()); playerPhysObj = physicsEngine.addBoxObject(physicsEngine.nextUID(), mass, temptf, up); //playerPhysObj.setBounciness(1.0f); playerPhysObj.setFriction(1.0f); - playerNode.setPhysicsObject(playerPhysObj);*/ + playerNode.setPhysicsObject(playerPhysObj); temptf = toDoubleArray(earthNode.getLocalTransform().toFloatArray()); earthPhysObj = physicsEngine.addSphereObject(physicsEngine.nextUID(),mass, temptf, 2.0f); @@ -659,7 +675,51 @@ public void initAudio(SceneManager sm) { setEarParameters(sm); hereSound.play(); oceanSound.play(); - } + } + + public void keyPressed(KeyEvent evt) { + int keyCode = evt.getKeyCode(); + switch(keyCode) { + case KeyEvent.VK_E: + orbitCamera.setRotateLeft(true); + break; + case KeyEvent.VK_Q: + orbitCamera.setRotateRight(true); + break; + case KeyEvent.VK_SPACE: + this.doAttack(); + break; + case KeyEvent.VK_W: + this.doNWalk(); + break; + case KeyEvent.VK_O: + soundToggle = ! soundToggle; + if (soundToggle == true) + audioMgr.resumeAllSounds(); + else + audioMgr.pauseAllSounds();; + break; + } + } + + public void keyReleased(KeyEvent evt) { + int keyCode = evt.getKeyCode(); + switch(keyCode) { + case KeyEvent.VK_E: + orbitCamera.setRotateLeft(false); + break; + case KeyEvent.VK_Q: + orbitCamera.setRotateRight(false); + break; + case KeyEvent.VK_SPACE: + this.doAttack(); + break; + } + } + + public SceneNode getPlayerNode() { + return playerNode; + } }