public void ProcessInput(FCgInputFrame inputFrame) { int and = 0; bool or = false; int count = inputFrame.Inputs.Count; for (int i = count - 1; i >= 0; --i) { FCgInput input = inputFrame.Inputs[i]; // Check And int andCount = AndInputs.Count; for (int j = and; j < andCount; ++j) { if (input.Action == AndInputs[j].Action && input.Event == AndInputs[j].Event) { ++and; } } // Check Or int orCount = OrInputs.Count; for (int j = 0; j < orCount; ++j) { or |= input.Action == OrInputs[j].Action && input.Event == OrInputs[j].Event; if (or) { break; } } Completed = (and > 0 && and == andCount) || or; if (Completed) { if (Consume) { inputFrame.Inputs.RemoveAt(i); } CompletedTime = inputFrame.Time; break; } } }
public void Copy(FCgInputFrame rhs) { Time = rhs.Time; RealTime = rhs.RealTime; DeltaTime = rhs.DeltaTime; Frame = rhs.Frame; Inputs.Clear(); int count = rhs.Inputs.Count; for (int i = 0; i < count; ++i) { Inputs.Add(rhs.Inputs[i]); } }
public override bool Equals(object obj) { if (!(obj is FCgInputFrame)) { return(false); } FCgInputFrame rhs = (FCgInputFrame)obj; if (Time != rhs.Time) { return(false); } if (RealTime != rhs.RealTime) { return(false); } if (DeltaTime != rhs.DeltaTime) { return(false); } if (Frame != rhs.Frame) { return(false); } if (Inputs.Count != rhs.Inputs.Count) { return(false); } int count = Inputs.Count; for (int i = 0; i < count; ++i) { if (Inputs[i] != rhs.Inputs[i]) { return(false); } } return(true); }
public void ProcessInput(FCgInputFrame inputFrame) { float currentTime = inputFrame.Time; // Check if Cooldown has Expired if (!Active) { if (currentTime - CompletedTime >= Cooldown) { Reset(); } else { return; } } // Check if ALL Phrases are Completed int count = Phrases.Count; int index = 0; if (UseInterval) { //float elapsedTime = 0.0f; float earliestCompletedTime = currentTime; for (index = 0; index < count; ++index) { if (Phrases[index].Completed) { if (Phrases[index].CompletedTime < earliestCompletedTime) { earliestCompletedTime = Phrases[index].CompletedTime; } if (currentTime - earliestCompletedTime > Interval) { Reset(); index = 0; break; } } Phrases[index].ProcessInput(inputFrame); if (index < count - 1 || !Phrases[index].Completed) { break; } } } else { for (index = 0; index < count; ++index) { if (Phrases[index].Completed) { continue; } Phrases[index].ProcessInput(inputFrame); if (index < count - 1 || !Phrases[index].Completed) { break; } } if (index != count) { Reset(); } } // Check if Completed if (index == count) { Completed = true; CompletedTime = currentTime; Active = false; } }
public void ProcessInput(FCgInputFrame inputFrame) { float currentTime = inputFrame.Time; // Check if ALL Words are Completed int count = Words.Count; int index = 0; if (UseInterval) { //float elapsedTime = 0.0f; float earliestCompletedTime = currentTime; for (index = 0; index < count; ++index) { if (Words[index].Completed) { if (Words[index].CompletedTime < earliestCompletedTime) { earliestCompletedTime = Words[index].CompletedTime; } if (currentTime - earliestCompletedTime > Interval) { Reset(); index = 0; break; } } Words[index].ProcessInput(inputFrame); if (index < count - 1 || !Words[index].Completed) { break; } } } else { for (index = 0; index < count; ++index) { if (Words[index].Completed) { continue; } Words[index].ProcessInput(inputFrame); if (index < count - 1 || !Words[index].Completed) { break; } } if (index != count) { Reset(); } } // Check if Completed if (index > 0 && index == count) { Completed = true; CompletedTime = currentTime; } }