コード例 #1
0
ファイル: PathBranch.cs プロジェクト: manet3/supaplex
        private WayPoint CheckNeighbours(int ruquiredIndex, Vector currentLoc)
        {
            WayPoint resPoint       = null;
            WayPoint bufferResPoint = null;

            foreach (var directon in CommonDirectons)
            {
                var      loc = directon + currentLoc;
                WayPoint nextPoint;
                if (!MapedPoints.TryGetValue(loc, out nextPoint) || nextPoint.Index != ruquiredIndex)
                {
                    continue;
                }
                //getting to the key point
                KeyPoint keyPoint;
                if (KeyPoints.TryGetValue(loc, out keyPoint))
                {
                    bufferResPoint = nextPoint;
                    PathTreeBuilder.AddKey(loc);//adding passed key point => potetial new branch
                    //check the mooving consequenses
                    foreach (var leanedEntLoc in keyPoint.LeanedEntities)
                    {
                        foreach (var points in FallPoints[leanedEntLoc].LeanPoints)
                        {
                            if (!points.Contains(ModelUsage.MurphLoc))
                            {
                                continue;
                            }
                            foreach (var point in points)
                            {
                                if (points.Count != 1 && !KeyPoints[point].isStepped)
                                {
                                    continue;
                                }
                                //ball is going to fall
                                //DO SOMETHING
                            }
                        }
                    }
                    continue;
                }
                resPoint = nextPoint;
                break;
            }
            return(resPoint ?? bufferResPoint);
        }
コード例 #2
0
ファイル: AiModel.cs プロジェクト: manet3/supaplex
        public void ConvertPath()
        {
            var pathBuilder = new PathTreeBuilder();
            var path        = pathBuilder.GetFinalPath();//getting branches
            var pathTree    = pathBuilder.MajorBranches;

            //log output
            Directory.CreateDirectory("logs");
            using (var fs = new StreamWriter("logs/debug.txt", false, Encoding.UTF8))
            {
                for (int i = 0; i < pathTree.Count; i++)
                {
                    var pathBranch = pathTree[i];
                    fs.Write(@"<BRANCH START {0}>  ", i);
                    var pnts = new List <string>();
                    foreach (var point in pathBranch.ExceptPoints)
                    {
                        if (i == 0)
                        {
                            break;
                        }
                        pnts.Add(string.Format("{0},{1}", point.X, point.Y));
                    }
                    fs.WriteLine(string.Join(" | ", pnts));

                    foreach (var point in pathBranch.AllPath)
                    {
                        fs.WriteLine(@"{0},{1}", point.Location.X, point.Location.Y);
                    }
                    fs.WriteLine(@"<BRANCH END {0}>", i);
                    fs.WriteLine();
                }
            }
            //converting to directions cosequence
            for (int i = 1; i < path.Count; i++)
            {
                SelectedPath.Add(path[i].Location - path[i - 1].Location);
            }
        }