public void PatternCompletion(GameEventArgs argument) { PatternArgs patternArgument = (PatternArgs)argument; if (patternArgument.teamID != teamID) { return; } beamCollider.enabled = true; if (beam.disrupted) { beam.enable(); hasSignal = false; } //Push everyone Vector3 recPos = receiver.transform.position; Character[] chars = GameHandler.instance.playerJoin.characters; for (int i = 0; i < chars.Length; i++) { if (chars[i].gameObject != receiver.gameObject) { Vector3 delta = chars[i].transform.position - recPos; float force = pushForceCurve.Evaluate(delta.magnitude) * forceMultiplier; chars[i].body.AddForce(delta.normalized * force, ForceMode.Impulse); } } beamStartedTime = Time.time; }
public void SetBlockList(List <PatternBlock> flatBlockList, PatternArgs patternArgs) { this.patternArgs = patternArgs; blockList.Clear(); List <PatternBlock> singeList = new List <PatternBlock>(); //int blockId = -1; for (int i = 0; i < flatBlockList.Count; ++i) { PatternBlock block = flatBlockList[i]; singeList.Add(block); //if (block.blockId != blockId) //{ // singeList = new List<PatternBlock>(); // PatternBlock selfRefBlock = new PatternBlock(); // selfRefBlock.targetStart = block.startLine; // selfRefBlock.targetEnd = block.endLine; // selfRefBlock.blockId = block.blockId; // singeList.Add(selfRefBlock); // singeList.Add(block); // this.blockList.Add(singeList); // blockId = block.blockId; //} //else //{ // singeList.Add(block); //} } this.blockList.Add(singeList); this.Invoke(new MethodInvoker(SetBlockListGuiStuff)); }
public override PatternUst Visit(PatternArgs patternExpressions) { // #* #* ... #* -> #* var args = new List <PatternUst>(patternExpressions.Args.Count); foreach (PatternUst arg in patternExpressions.Args) { args.Add(arg); } int index = 0; while (index < args.Count) { if (args[index] is PatternMultipleExpressions && index + 1 < args.Count && args[index + 1] is PatternMultipleExpressions) { args.RemoveAt(index); } else { index++; } } return(new PatternArgs(args)); }
public PatternUst VisitIndexerExpression(DslParser.IndexerExpressionContext context) { PatternUst target = VisitExpression(context.expression(0)); var args = new PatternArgs(VisitExpression(context.expression(1))); var result = new PatternIndexerExpression(target, args, context.GetTextSpan()); return(result); }
public void PatternFailure(GameEventArgs argument) { PatternArgs patternArgument = (PatternArgs)argument; if (patternArgument.teamID != teamID) { return; } hasSignal = false; }
public PatternUst VisitInvocationExpression(DslParser.InvocationExpressionContext context) { PatternArgs args = context.args() == null ? new PatternArgs() : (PatternArgs)VisitArgs(context.args()); PatternUst expr = VisitExpression(context.expression()); var result = new PatternInvocationExpression(expr, args, context.GetTextSpan()); return(result); }
public void NoteSuccess(GameEventArgs argument) { PatternArgs patternArgument = (PatternArgs)argument; if (patternArgument.teamID != teamID) { return; } sender.correctNoteFeedback.Play(); }
public PatternUst VisitObjectCreationExpression(DslParser.ObjectCreationExpressionContext context) { PatternUst literal = VisitLiteralOrPatternId(context.literalOrPatternId()); var typeToken = new PatternIdToken(literal.ToString(), literal.TextSpan); PatternArgs args = context.args() == null ? new PatternArgs() : (PatternArgs)VisitArgs(context.args()); var result = new PatternObjectCreateExpression(typeToken, args, context.GetTextSpan()); return(result); }
public PatternUst VisitObjectCreationExpression(DslParser.ObjectCreationExpressionContext context) { List <PatternUst> literals = context.literalOrPatternId() .Select(VisitLiteralOrPatternId).ToList(); string typeString = string.Join(".", literals); TextSpan typeTextSpan = literals.Select(literal => literal.TextSpan).ToList().Union(); var typeToken = new PatternIdToken(typeString, typeTextSpan); PatternArgs args = context.args() == null ? new PatternArgs() : (PatternArgs)VisitArgs(context.args()); var result = new PatternObjectCreateExpression(typeToken, args, context.GetTextSpan()); return(result); }
private void OnPatternSuccess(GameEventArgs arguments) { PatternArgs patternArguments = (PatternArgs)arguments; if (patternArguments.teamID == 0) { team0HasBeam = true; team0Score += (timeForWin / scoreIncrements); } if (patternArguments.teamID == 1) { team1HasBeam = true; team1Score += (timeForWin / scoreIncrements); } }
public PatternUst VisitArgs([NotNull] DslParser.ArgsContext context) { IEnumerable <PatternUst> expressions = context.arg().Select(arg => (PatternUst)VisitArg(arg)); var textSpan = context.GetTextSpan(); PatternArgs result; if (expressions.All(expr => !(expr is PatternMultipleExpressions))) { result = new PatternArgs(expressions) { TextSpan = textSpan }; } else { result = new PatternArgs(expressions) { TextSpan = textSpan }; } return(result); }
public override PatternUst Visit(PatternArgs patternExpressions) { // #* #* ... #* -> #* List <PatternUst> args = patternExpressions.Args .Select(item => (PatternUst)Visit(item)).ToList(); int index = 0; while (index < args.Count) { if (args[index] is PatternMultipleExpressions && index + 1 < args.Count && args[index + 1] is PatternMultipleExpressions) { args.RemoveAt(index); } else { index++; } } var result = new PatternArgs(args); return(result); }
public virtual T Visit(PatternArgs patternArgs) { return(VisitChildren(patternArgs)); }
public void TestStatistic(PatternArgs patternArgs, ILogWindowSearch logWindow) { int beginLine = patternArgs.startLine; Logger.logInfo("TestStatistics() called with start line " + beginLine); logWindow.PatternArgs = patternArgs; int num = beginLine + 1; logWindow.ProgressEventArgs.MinValue = 0; logWindow.ProgressEventArgs.MaxValue = logWindow.DataGridView.RowCount; logWindow.ProgressEventArgs.Value = beginLine; logWindow.ProgressEventArgs.Visible = true; logWindow.SendProgressBarUpdate(); PrepareDict(logWindow); Dictionary<int, int> processedLinesDict = new Dictionary<int, int>(); List<PatternBlock> blockList = new List<PatternBlock>(); int blockId = 0; logWindow.IsSearching = true; logWindow.ShouldCancel = false; int searchLine = -1; for (int i = beginLine; i < num && !logWindow.ShouldCancel; ++i) { if (processedLinesDict.ContainsKey(i)) { continue; } PatternBlock block; int maxBlockLen = patternArgs.endLine - patternArgs.startLine; Logger.logDebug("TestStatistic(): i=" + i + " searchLine=" + searchLine); searchLine++; logWindow.UpdateProgressBar(searchLine); while (!logWindow.ShouldCancel && (block = DetectBlock(i, searchLine, maxBlockLen, logWindow.PatternArgs.maxDiffInBlock, logWindow.PatternArgs.maxMisses, processedLinesDict, logWindow)) != null) { Logger.logDebug("Found block: " + block); if (block.weigth >= logWindow.PatternArgs.minWeight) { blockList.Add(block); AddBlockTargetLinesToDict(processedLinesDict, block); block.blockId = blockId; searchLine = block.targetEnd + 1; } else { searchLine = block.targetStart + 1; } logWindow.UpdateProgressBar(searchLine); } blockId++; } logWindow.IsSearching = false; logWindow.ProgressEventArgs.MinValue = 0; logWindow.ProgressEventArgs.MaxValue = 0; logWindow.ProgressEventArgs.Value = 0; logWindow.ProgressEventArgs.Visible = false; logWindow.SendProgressBarUpdate(); logWindow.PatternWindow.SetBlockList(blockList, logWindow.PatternArgs); Logger.logInfo("TestStatistics() ended"); }
public void TestStatistic(PatternArgs patternArgs, ILogWindowSearch logWindow) { int beginLine = patternArgs.startLine; Logger.logInfo("TestStatistics() called with start line " + beginLine); logWindow.PatternArgs = patternArgs; int num = beginLine + 1; logWindow.ProgressEventArgs.MinValue = 0; logWindow.ProgressEventArgs.MaxValue = logWindow.DataGridView.RowCount; logWindow.ProgressEventArgs.Value = beginLine; logWindow.ProgressEventArgs.Visible = true; logWindow.SendProgressBarUpdate(); PrepareDict(logWindow); Dictionary <int, int> processedLinesDict = new Dictionary <int, int>(); List <PatternBlock> blockList = new List <PatternBlock>(); int blockId = 0; logWindow.IsSearching = true; logWindow.ShouldCancel = false; int searchLine = -1; for (int i = beginLine; i < num && !logWindow.ShouldCancel; ++i) { if (processedLinesDict.ContainsKey(i)) { continue; } PatternBlock block; int maxBlockLen = patternArgs.endLine - patternArgs.startLine; Logger.logDebug("TestStatistic(): i=" + i + " searchLine=" + searchLine); searchLine++; logWindow.UpdateProgressBar(searchLine); while (!logWindow.ShouldCancel && (block = DetectBlock(i, searchLine, maxBlockLen, logWindow.PatternArgs.maxDiffInBlock, logWindow.PatternArgs.maxMisses, processedLinesDict, logWindow)) != null) { Logger.logDebug("Found block: " + block); if (block.weigth >= logWindow.PatternArgs.minWeight) { blockList.Add(block); AddBlockTargetLinesToDict(processedLinesDict, block); block.blockId = blockId; searchLine = block.targetEnd + 1; } else { searchLine = block.targetStart + 1; } logWindow.UpdateProgressBar(searchLine); } blockId++; } logWindow.IsSearching = false; logWindow.ProgressEventArgs.MinValue = 0; logWindow.ProgressEventArgs.MaxValue = 0; logWindow.ProgressEventArgs.Value = 0; logWindow.ProgressEventArgs.Visible = false; logWindow.SendProgressBarUpdate(); logWindow.PatternWindow.SetBlockList(blockList, logWindow.PatternArgs); Logger.logInfo("TestStatistics() ended"); }