private void UpdateSingleEscapeState(Packet p) { GlobalVariables.EscapeState escapeState = (GlobalVariables.EscapeState)Enum.Parse(typeof(GlobalVariables.EscapeState), p.generalData[0].ToString()); bool progression = bool.Parse(p.generalData[1].ToString()); GlobalVariables.UpdateProgression(escapeState, progression); }
// Allows clients to update escape states on the server and all other clients. // PacketType = UpdateSingleEscapeStateOnServer. CALLED BY ANY CLIENT. private void UpdateSingleEscapeStateOnServer(Packet p) { GlobalVariables.EscapeState escapeState = (GlobalVariables.EscapeState)Enum.Parse(typeof(GlobalVariables.EscapeState), p.generalData[0].ToString()); bool progression = bool.Parse(p.generalData[1].ToString()); if (!GlobalVariables.CheckProgression(escapeState)) { TriggerEscapeStateFirstTimeEvent(escapeState); } GlobalVariables.UpdateProgression(escapeState, progression); UpdateEscapeStateOnClients(); }
// This function contains logic for what happens after a escape state gets triggered for the first time private void TriggerEscapeStateFirstTimeEvent(GlobalVariables.EscapeState escapeState) { Debug.Log(escapeState.ToString() + " triggered"); switch (escapeState) { case GlobalVariables.EscapeState.EscapeStarted: if (raspPiOnline) { rpi.Do(RPI.CMD.PLAY_COMPUTER_GREETING); } break; case GlobalVariables.EscapeState.SubControlsEnabled: if (raspPiOnline) { rpi.Do(RPI.CMD.PLAY_SUB_CONTROL_TUT); } break; case GlobalVariables.EscapeState.FuzesScattered: if (raspPiOnline) { rpi.Do(RPI.CMD.PLAY_FUSES_DISLODGED); } break; case GlobalVariables.EscapeState.SubDescended: if (raspPiOnline) { rpi.Do(RPI.CMD.PLAY_OXYGEN_LVL_DECREASE); } break; case GlobalVariables.EscapeState.KeypadCodeEntered: if (raspPiOnline) { rpi.Do(RPI.CMD.PLAY_DIAGNOSTICS_ONLINE); } break; case GlobalVariables.EscapeState.SubStartDescending: if (raspPiOnline) { rpi.Do(RPI.CMD.PLAY_SUB_START_DESCEND); } break; } }
// Allows you to update a single escape state on the server and clients // CALLED BY ANYWHERE ON THE SERVER. public void UpdateSingleEscapeStateOnClients(GlobalVariables.EscapeState escapeState, bool progression) { if (!GlobalVariables.CheckProgression(escapeState)) { TriggerEscapeStateFirstTimeEvent(escapeState); } GlobalVariables.UpdateProgression(escapeState, progression); Packet pack = new Packet((int)PacketType.UpdateSingleEscapeStateOnClients, PacketType.UpdateSingleEscapeStateOnClients.ToString()); pack.generalData.Add(escapeState); pack.generalData.Add(progression); for (int i = 0; i < Server.udpClients.Count; i++) { Server.udpClients[i].SendPacket(pack); } }