Esempio n. 1
0
    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;
    }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
    public void PatternFailure(GameEventArgs argument)
    {
        PatternArgs patternArgument = (PatternArgs)argument;

        if (patternArgument.teamID != teamID)
        {
            return;
        }
        hasSignal = false;
    }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
    public void NoteSuccess(GameEventArgs argument)
    {
        PatternArgs patternArgument = (PatternArgs)argument;

        if (patternArgument.teamID != teamID)
        {
            return;
        }

        sender.correctNoteFeedback.Play();
    }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
    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);
        }
    }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
 public virtual T Visit(PatternArgs patternArgs)
 {
     return(VisitChildren(patternArgs));
 }
Esempio n. 14
0
		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");
		}
Esempio n. 15
0
        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");
        }