public virtual void onTick() { //First, need to set what object sare in range //since this is the first ontick method. if (vArray == null) { vArray = Interaction.getObjectsInRange(this, reachRange, Interaction.RangeFlag.existing); } updateTotalDistance(); move(); if (Options.mode == Options.Modes.mission && followTarget && origTarget != null) { z = origTarget.z; } if (damage < 1) { expl = DSound.LoadSound(DSound.SoundPath + "\\m4-1.wav"); DSound.PlaySound(expl, true, false); finished = true; } }
private void playTaunt(String t) { if (taunt != null && DSound.isPlaying(taunt)) { return; } taunt = DSound.LoadSound(t); DSound.PlaySound(taunt, true, false); }
/// <summary> /// Plays a sound. /// </summary> /// <param name="theSound">The sound to play.</param> /// <param name="stopFlag">If the sound should be stopped before playing.</param> /// <param name="loopFlag">Whether the sound should be looped or not.</param> protected void playSound(SecondarySoundBuffer theSound, bool stopFlag, bool loopFlag) { if (isAI) { DSound.PlaySound3d(theSound, stopFlag, loopFlag, x, 0, y); } else { DSound.PlaySound(theSound, stopFlag, loopFlag); } }
/// <summary> /// Plays a sound. /// </summary> /// <param name="theSound">The sound to play.</param> /// <param name="stopFlag">If the sound should be stopped before playing.</param> /// <param name="loopFlag">Whether the sound should be looped or not.</param> protected void playSound(ExtendedAudioBuffer theSound, bool stopFlag, bool loopFlag) { if (isAI) { DSound.PlaySound3d(theSound, stopFlag, loopFlag, x, 0, y); } else { DSound.PlaySound(theSound, stopFlag, loopFlag); } }
private void playMessage(String o, bool wait) { if (message != null) { message.Stop(); } message = DSound.LoadSound(o); DSound.PlaySound(message, true, false); if (wait) { Interaction.stopAndMute(true); while (DSound.isPlaying(message)) { Thread.Sleep(100); } Interaction.resumeAndUnmute(); } //if wait }
//The below methods are mask methods for directX //All projectors will have the ability to play sounds from their perspectives public void playSound(ExtendedAudioBuffer theSound, bool stopFlag, bool loopFlag) { lock (this) { if (isAI && !autoPlayTarget) { if (!forceStareo) { DSound.PlaySound3d(theSound, stopFlag, loopFlag, x, z, y, velocity.X, velocity.Z, velocity.Y); } else { DSound.PlaySound(theSound, stopFlag, loopFlag); } } else { DSound.PlaySound(theSound, stopFlag, loopFlag); } } }
//The below methods are mask methods for directX //All projectors will have the ability to play sounds from their perspectives public void playSound(SecondarySoundBuffer theSound, bool stopFlag, bool loopFlag) { lock (this) { if (isAI && !autoPlayTarget) { if (!forceStareo) { DSound.PlaySound3d(theSound, stopFlag, loopFlag, x, z, y); } else { DSound.PlaySound(theSound, stopFlag, loopFlag); } } else { DSound.PlaySound(theSound, stopFlag, loopFlag); } } }
public static void NLS(string sFilename, bool NWait, long TheRate) { try { stopLastFile(); filesPlaying = true; files = new StringBuilder(); String[] SFiles = sFilename.Split('&'); for (int i = 0; i < SFiles.Length; i++) { sFilename = SFiles[i]; //if # is in front of array element author wants that element to be num voiced, //and it is not a .wav file. if (sFilename.Contains("#")) { processNumber( sFilename.Substring( sFilename.IndexOf("#") + 1 )); } else { //if reg .wav file sFilename = processFileName(sFilename); files.Append(sFilename); if (i != SFiles.Length - 1) { files.Append("&"); } } //if not number } //loop //Now we have all the files to play. String[] finalFiles = files.ToString().Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries); soundFiles = new SecondarySoundBuffer[finalFiles.Length]; bool firstLoop = true; for (globalCounter = 0; globalCounter < soundFiles.Length; globalCounter++) { if (firstLoop) { soundFiles[globalCounter] = DSound.LoadSound(finalFiles[globalCounter]); } DSound.PlaySound(soundFiles[globalCounter], true, false); if (globalCounter < finalFiles.Length - 1) { soundFiles[globalCounter + 1] = DSound.LoadSound(finalFiles[globalCounter + 1]); } firstLoop = false; //Next, if only playing one file, return since we're probably in a menu. if (soundFiles.Length != 1 || NWait) { NumWait(); } if (nStop) { filesPlaying = false; return; } } //next, global counter may be == length //of array since we completed the loop //so back it up to stop properly. if (globalCounter == soundFiles.Length) { globalCounter--; } filesPlaying = false; } catch (Exception e) { Common.handleError(e); } }
private static void processRCV() { try { while (live) { if (!CSCommon.isLiveConnection(client)) { live = false; SapiSpeech.speak("Error: Server crash.", SapiSpeech.SpeakFlag.noInterrupt); Common.exitMenus = true; Common.repop(); return; } MemoryStream stream = null; //Bytes have to be explicitly copied into new stream since cmds is closed to save memory later on, so we'll lose rcvPauseData. stream = CSCommon.getData(client); BinaryReader cmds = null; if (stream != null) { cmds = new BinaryReader(stream); } if (cmds != null) { sbyte t; long start = 0; //start position of current packet while (cmds.BaseStream.Length > cmds.BaseStream.Position) { start = cmds.BaseStream.Position; System.Diagnostics.Trace.WriteLine(String.Format("S: {0}, L: {1}", start, cmds.BaseStream.Length)); t = cmds.ReadSByte(); if (t == 1) { byte command = cmds.ReadByte(); System.Diagnostics.Trace.WriteLine("co " + command); switch (command) { case CSCommon.cmd_addMember: addMember(cmds.ReadString(), cmds.ReadString()); break; case CSCommon.cmd_removeMember: removeMember(cmds.ReadString()); break; case CSCommon.cmd_resp: int respLength = cmds.ReadInt32(); responseStream = new byte[respLength]; cmds.BaseStream.Read(responseStream, 0, respLength); waitingForResponse.Set(); break; case CSCommon.cmd_notifyDemo: DSound.PlaySound(DSound.LoadSound(DSound.NSoundPath + "\\cd3.wav"), true, false); break; case CSCommon.cmd_newval: SelfVoice.purge(true); int amount = cmds.ReadInt32(); SelfVoice.NLS("#" + amount + "&points.wav", true, true); addChatMessage(String.Format("You earned {0} point{1}", amount, (amount == 1) ? "" : "s")); break; case CSCommon.cmd_position: next = cmds.ReadInt64(); addOns = processAddOns(cmds); break; case CSCommon.cmd_chat: MessageType type = (MessageType)cmds.ReadByte(); if (type == MessageType.normal) { DSound.PlaySound(chatSound, true, false); } else if (type == MessageType.enterRoom) { DSound.PlaySound(chatEnterSound, true, false); } else if (type == MessageType.leaveRoom) { DSound.PlaySound(chatLeaveSound, true, false); } else if (type == MessageType.privateMessage) { DSound.PlaySound(privateMessageSound, true, false); } else { DSound.PlaySound(serverMessageSound, true, false); } String incomingChatMessage = cmds.ReadString(); SapiSpeech.speak(incomingChatMessage, SapiSpeech.SpeakFlag.interruptable); addChatMessage(incomingChatMessage); Common.mainGUI.addToHistory(incomingChatMessage); break; case CSCommon.cmd_serverMessage: String incomingServerMessage = cmds.ReadString(); SapiSpeech.speak(incomingServerMessage, SapiSpeech.SpeakFlag.interruptable); addChatMessage(incomingServerMessage); break; case CSCommon.cmd_forceDisconnect: //Player was disconnected from the server //By the server itself and not through an in-game event, //so if we receive this command, we are being told to wipe our copy of the player in question. //Still, the server will send forceDisconnect even if object has already been disconnected //due to in-game event. This is ok since if the object is already gone, //this command will do nothing. It is just a redundancy check, more or less. String idToTerminate = cmds.ReadString(); Projector pToTerm = Interaction.objectAt(idToTerminate); if (pToTerm != null) { pToTerm.requestingTerminate(); } Interaction.clearLocks(idToTerminate); break; case CSCommon.cmd_requestCreate: //Response from server for requestCreate command sent by client. Interaction.createPlayer(cmds.ReadString(), cmds.ReadInt32()); addSender(Mission.player.id); if (addOns != null) { Mission.player.setAddOns(addOns); } addOns = null; if (Options.mode == Options.Modes.teamDeath) { Mission.player.team = Options.team; } Interaction.startMultiplayerGame(); break; case CSCommon.cmd_distributeServerTag: Projector o = Interaction.createObjectFromServer(cmds.ReadString(), cmds.ReadString(), OnlineRole.receiver, (ObjectType)cmds.ReadByte()); System.Diagnostics.Trace.WriteLine("Received request to create opponent " + o.name); if (Options.mode == Options.Modes.teamDeath) { o.team = (Projector.TeamColors)cmds.ReadInt32(); } AddOnArgs[] distAdd = processAddOns(cmds); if (distAdd != null) { o.setAddOns(distAdd); } break; case CSCommon.cmd_createBot: String createBotId = cmds.ReadString(); String createBotName = cmds.ReadString(); Projector bot = Interaction.createObjectFromServer(createBotId, createBotName, OnlineRole.bot, (ObjectType)cmds.ReadByte()); //will create bot or update current receiver to bot status. addSender(bot.id); break; case CSCommon.cmd_startGame: hostStartedGame = true; System.Diagnostics.Trace.WriteLine("Host started game"); break; case CSCommon.cmd_gameEnded: Options.serverEndedGame = true; break; } //switch System.Diagnostics.Trace.WriteLine("Command: " + t); continue; } //if command System.Diagnostics.Trace.Write(String.Format("Stream position: {0}, start: {1}, Char: {2} ", (int)cmds.BaseStream.Position, start, t)); int size = cmds.ReadInt32(); //total update size System.Diagnostics.Trace.WriteLine("Size: " + size); int temSize = size; String tag = cmds.ReadString(); System.Diagnostics.Trace.WriteLine(tag + " queuing data..."); Projector p = null; size = size - (int)(cmds.BaseStream.Position - start); byte[] buffer = null; try { buffer = new byte[size]; } catch (OverflowException) { throw new OverflowException(String.Format("Size: {0}, Stream position: {1}, start: {2}, original size: {3} Char: {4}", size, (int)cmds.BaseStream.Position, start, temSize, t)); } cmds.BaseStream.Read(buffer, 0, size); //Object could have been deleted by the time this command is reached if ((p = Interaction.objectAt(tag)) != null) { System.Diagnostics.Trace.WriteLine("Object found. sending queue"); p.queueData(t, buffer); } //if object exists else { System.Diagnostics.Trace.WriteLine("Object not found."); } } //while more data to read cmds.Close(); } //if got data Thread.Sleep(50); } //while live connection } catch (Exception e) { Common.handleError(e); } //catch finally { releaseConnection(); } }
private static void showDevices() { InputDeviceCollection dList = null; ////holds keyboards InputDeviceCollection dList2 = null; ////holds game controllers dList = DirectInput.GetDevices(DeviceClass.Keyboard, DeviceEnumerationFlags.AttachedOnly); ////enumerator for keyboards dList2 = DirectInput.GetDevices(DeviceClass.GameController, DeviceEnumerationFlags.AttachedOnly); ////enumerator for all game controllers DeviceInstance[] devList = null; devList = (DeviceInstance[])(Array.CreateInstance(typeof(DeviceInstance), (dList2 == null) ? 1 : 2)); foreach (DeviceInstance d in dList) { devList[0] = d; break; } if (dList2 != null) { foreach (DeviceInstance d in dList2) { devList[1] = d; break; } } string[] devListSTR = new string[(dList2 == null) ? 1 : 2]; devListSTR[0] = "mainmenu_5_1_1.wav"; if (dList2 != null) { devListSTR[1] = "mainmenu_5_1_2.wav"; } int mindex = Common.sVGenerateMenu(null, devListSTR); if (mindex == -1) { return; } ////exit menu if (mindex > 0) { ////chose joystick ////so config it dxInput.DInputInit(Common.mainGUI.Handle, devList[mindex].InstanceGuid); configureJS(devList[mindex].InstanceGuid); KeyMap.readFromFile(); SecondarySoundBuffer confirm = DSound.LoadSound(DSound.NSoundPath + "\\gce.wav"); DSound.PlaySound(confirm, true, false); while (DSound.isPlaying(confirm)) { Thread.Sleep(10); } DSound.unloadSound(confirm); confirm = null; } else { if (dxInput.JSDevice != null) { dxInput.JSDevice.Unacquire(); dxInput.JSDevice = null; } //if !null KeyMap.readFromFile(); } //if chose keyboard }