Skip to content

Instantly share code, notes, and snippets.

@Abion47
Created August 20, 2017 03:34
Show Gist options
  • Save Abion47/06a0fc6ad176ed94d33a8701a53441ee to your computer and use it in GitHub Desktop.
Save Abion47/06a0fc6ad176ed94d33a8701a53441ee to your computer and use it in GitHub Desktop.
/////////////////////////////////////////
// Terminal *Voice Lock Terminal*
//{//////////////////////////////////////
//-------------------------------------------------------
bool mbHasCorrectVoice = false;
bool mbInteracted = false;
bool mbIsPlaying = false;
float mfResponseTimer = 0.0f;
cColor mWaveformColor;
tString msCurrentTiming;
//-------------------------------------------------------
void audiolock_interact_OnPlayerInteract(const tString &in asEntity)
{
if (mbIsPlaying || mfResponseTimer > 0.0f)
{
return;
}
if (mbHasCorrectVoice)
{
Sound_PlayGui("sounds/recording_correct.ogg", 1.0);
}
else
{
Sound_PlayGui("sounds/recording_wrong.ogg", 1.0);
}
mbInteracted = true;
}
//-------------------------------------------------------
void audiolock_OnGui(const tString&in asEntityName, float afTimeStep)
{
if (ImGui_IsFirstRun())
{
mWaveformColor = cColor(1.0, 1.0, 0.0);
///////////////////////////
// Create timing for the wrong voice
Waveform_CreateTiming("wrong_voice");
Waveform_AddStep(0.000, 0.319, 0.0, 0.0);
Waveform_AddStep(0.319, 0.025, 0.0, 0.75);
Waveform_AddStep(0.340, 0.079, 0.75, 1.0);
Waveform_AddStep(0.419, 0.216, 1.0, 0.75);
Waveform_AddStep(0.635, 0.047, 0.75, 0.05);
Waveform_AddStep(0.682, 0.136, 0.05, 0.0);
Waveform_AddStep(0.818, 0.464, 0.0, 0.0);
Waveform_AddStep(1.282, 0.063, 0.0, 0.6);
Waveform_AddStep(1.345, 0.091, 0.6, 0.0);
Waveform_AddStep(1.436, 0.085, 0.0, 0.0);
Waveform_AddStep(1.521, 0.063, 0.0, 0.6);
Waveform_AddStep(1.584, 0.068, 0.6, 0.1);
Waveform_AddStep(1.652, 0.138, 0.1, 0.0);
Waveform_AddStep(1.790, 0.790, 0.0, 0.0);
///////////////////////////
// Create timing for the correct voice
Waveform_CreateTiming("correct_voice");
Waveform_AddStep(0.000, 0.077, 0.0, 0.0);
Waveform_AddStep(0.077, 0.029, 0.0, 0.5);
Waveform_AddStep(0.106, 0.013, 0.5, 0.75);
Waveform_AddStep(0.119, 0.055, 0.75, 0.75);
Waveform_AddStep(0.174, 0.031, 0.75, 0.1);
Waveform_AddStep(0.205, 0.069, 0.1, 0.1);
Waveform_AddStep(0.274, 0.004, 0.1, 0.9);
Waveform_AddStep(0.278, 0.055, 0.9, 0.2);
Waveform_AddStep(0.333, 0.059, 0.2, 0.2);
Waveform_AddStep(0.392, 0.059, 0.2, 0.2);
Waveform_AddStep(0.392, 0.002, 0.2, 0.3);
Waveform_AddStep(0.394, 0.002, 0.3, 0.2);
Waveform_AddStep(0.396, 0.027, 0.2, 0.2);
Waveform_AddStep(0.423, 0.027, 0.2, 0.2);
Waveform_AddStep(0.423, 0.002, 0.2, 0.3);
Waveform_AddStep(0.425, 0.002, 0.3, 0.2);
Waveform_AddStep(0.427, 0.020, 0.2, 0.2);
Waveform_AddStep(0.447, 0.011, 0.2, 1.0);
Waveform_AddStep(0.458, 0.008, 1.0, 0.7);
Waveform_AddStep(0.466, 0.200, 0.7, 0.7);
Waveform_AddStep(0.466, 0.200, 0.7, 0.7);
Waveform_AddStep(0.666, 0.101, 0.7, 0.2);
Waveform_AddStep(0.767, 0.081, 0.2, 0.5);
Waveform_AddStep(0.848, 0.055, 0.5, 0.1);
Waveform_AddStep(0.903, 0.041, 0.1, 0.1);
Waveform_AddStep(0.944, 0.001, 0.1, 0.9);
Waveform_AddStep(0.945, 0.007, 0.9, 0.2);
Waveform_AddStep(0.952, 0.007, 0.2, 0.9);
Waveform_AddStep(0.959, 0.003, 0.9, 0.4);
Waveform_AddStep(0.962, 0.038, 0.4, 0.6);
Waveform_AddStep(1.000, 0.054, 0.6, 0.1);
Waveform_AddStep(1.054, 0.097, 0.1, 0.1);
Waveform_AddStep(1.151, 0.009, 0.1, 0.15);
Waveform_AddStep(1.160, 0.250, 0.15, 0.15);
Waveform_AddStep(1.410, 0.018, 0.15, 0.2);
Waveform_AddStep(1.428, 0.012, 0.2, 0.15);
Waveform_AddStep(1.440, 0.050, 0.15, 0.15);
Waveform_AddStep(1.490, 0.008, 0.15, 0.2);
Waveform_AddStep(1.498, 0.081, 0.2, 0.1);
Waveform_AddStep(1.579, 0.079, 0.1, 0.1);
Waveform_AddStep(1.658, 0.019, 0.1, 1.0);
Waveform_AddStep(1.677, 0.259, 1.0, 1.0);
Waveform_AddStep(1.936, 0.085, 1.0, 0.6);
Waveform_AddStep(2.021, 0.019, 0.6, 0.1);
Waveform_AddStep(2.040, 0.051, 0.1, 0.1);
Waveform_AddStep(2.091, 0.032, 0.1, 0.6);
Waveform_AddStep(2.123, 0.056, 0.6, 0.6);
Waveform_AddStep(2.179, 0.058, 0.6, 0.1);
Waveform_AddStep(2.237, 0.004, 0.1, 0.6);
Waveform_AddStep(2.241, 0.092, 0.6, 0.6);
Waveform_AddStep(2.333, 0.022, 0.6, 0.2);
Waveform_AddStep(2.355, 0.017, 0.2, 0.6);
Waveform_AddStep(2.372, 0.063, 0.6, 0.2);
Waveform_AddStep(2.435, 0.021, 0.2, 0.6);
Waveform_AddStep(2.456, 0.060, 0.6, 0.5);
Waveform_AddStep(2.516, 0.149, 0.5, 0.5);
Waveform_AddStep(2.665, 0.021, 0.5, 0.1);
Waveform_AddStep(2.686, 0.021, 0.1, 0.2);
Waveform_AddStep(2.707, 0.009, 0.2, 0.6);
Waveform_AddStep(2.716, 0.051, 0.6, 0.4);
Waveform_AddStep(2.767, 0.019, 0.4, 0.1);
Waveform_AddStep(2.786, 0.019, 0.1, 0.6);
Waveform_AddStep(2.805, 0.022, 0.6, 0.5);
Waveform_AddStep(2.827, 0.020, 0.5, 0.1);
Waveform_AddStep(2.847, 0.054, 0.1, 0.1);
Waveform_AddStep(2.901, 0.006, 0.1, 0.8);
Waveform_AddStep(2.907, 0.069, 0.8, 0.4);
Waveform_AddStep(2.976, 0.070, 0.4, 0.4);
Waveform_AddStep(3.046, 0.012, 0.4, 0.8);
Waveform_AddStep(3.058, 0.015, 0.8, 0.6);
Waveform_AddStep(3.073, 0.066, 0.6, 0.6);
Waveform_AddStep(3.139, 0.011, 0.6, 0.1);
Waveform_AddStep(3.150, 0.031, 0.1, 0.1);
Waveform_AddStep(3.181, 0.004, 0.1, 0.4);
Waveform_AddStep(3.185, 0.008, 0.4, 0.1);
Waveform_AddStep(3.193, 0.009, 0.1, 0.4);
Waveform_AddStep(3.202, 0.021, 0.4, 0.2);
Waveform_AddStep(3.223, 0.010, 0.2, 0.5);
Waveform_AddStep(3.233, 0.038, 0.5, 0.2);
Waveform_AddStep(3.261, 0.027, 0.2, 0.3);
Waveform_AddStep(3.288, 0.010, 0.3, 0.4);
Waveform_AddStep(3.298, 0.035, 0.4, 0.8);
Waveform_AddStep(3.333, 0.188, 0.8, 0.7);
Waveform_AddStep(3.521, 0.049, 0.7, 0.2);
Waveform_AddStep(3.570, 0.077, 0.2, 0.1);
Waveform_AddStep(3.647, 0.003, 0.1, 0.5);
Waveform_AddStep(3.650, 0.003, 0.5, 0.15);
Waveform_AddStep(3.653, 0.026, 0.15, 0.2);
Waveform_AddStep(3.679, 0.004, 0.2, 0.6);
Waveform_AddStep(3.683, 0.029, 0.6, 0.6);
Waveform_AddStep(3.711, 0.040, 0.6, 0.2);
Waveform_AddStep(3.751, 0.012, 0.2, 0.3);
Waveform_AddStep(3.763, 0.040, 0.3, 0.3);
Waveform_AddStep(3.803, 0.007, 0.3, 0.4);
Waveform_AddStep(3.810, 0.128, 0.4, 0.4);
Waveform_AddStep(3.938, 0.073, 0.4, 0.1);
Waveform_AddStep(4.014, 0.042, 0.1, 0.1);
Waveform_AddStep(4.056, 0.007, 0.1, 0.2);
Waveform_AddStep(4.063, 0.141, 0.2, 0.2);
Waveform_AddStep(4.204, 0.019, 0.2, 0.1);
Waveform_AddStep(4.223, 0.115, 0.1, 0.1);
}
///////////////////////////
// Trigger a timing reset
if (mbInteracted)
{
mbIsPlaying = true;
mbInteracted = false;
mfResponseTimer = 0.0f;
if (mbHasCorrectVoice)
{
msCurrentTiming = "correct_voice";
}
else
{
msCurrentTiming = "wrong_voice";
}
Waveform_ResetTiming(msCurrentTiming);
}
///////////////////////////
// Draw Wave
if (mbIsPlaying)
{
// Draw the wave with timing
if (Waveform_DoWaveform(afTimeStep, msCurrentTiming, ImGui_NrmPos(0.0, 0.0, 1.0), ImGui_NrmSize(1, 1), 240, 32, 15, 0.08, mWaveformColor))
{
// Timing is complete
mbIsPlaying = false;
mfResponseTimer = 5.0f;
if (mbHasCorrectVoice)
{
mWaveformColor = cColor_Green;
Sound_CreateAtEntity("Depth_Audio_Terminal_Air_Confirm", "Entities_Station/tech/terminal_beeps/pathOS_comp/pathOS_comp_ confirm", asEntityName, 0, false);
SlideDoor_SetClosed("slidedoor_tau_small_2", false);
}
else
{
mWaveformColor = cColor_Red;
Sound_CreateAtEntity("Depth_Audio_Terminal_Air_Error", "Entities_Station/tech/terminal_beeps/pathOS_comp/pathOS_comp_error", asEntityName, 0, false);
}
}
}
else
{
// Notihng is playing, just display noise
Waveform_DoNoise(afTimeStep, ImGui_NrmPos(0.0, 0.0, 1.0), ImGui_NrmSize(1, 1), 240, 32, 15, 0.08, mWaveformColor);
}
if (mfResponseTimer > 0)
{
mfResponseTimer -= afTimeStep;
if (mbHasCorrectVoice)
{
ImGui_DoImage(cImGuiGfx("terminal/access_granted.tga"), ImGui_NrmPos(0.1, 0.35, 5), ImGui_NrmSize(0.8, 0.3));
}
else
{
ImGui_DoImage(cImGuiGfx("terminal/access_denied.tga"), ImGui_NrmPos(0.1, 0.35, 5), ImGui_NrmSize(0.8, 0.3));
}
if (mfResponseTimer <= 0.0f)
{
mfResponseTimer = 0.0f;
mWaveformColor = cColor(1.0f, 1.0f, 0.0f);
}
}
}
//-------------------------------------------------------
//} END Terminal *Voice Lock Terminal*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment