Exemple #1
0
    public Map2dAStar(Func <bool> canJump, MazeLevel maze, VisionMapping vision, Transform transform, GameObject prefab_debug_astar)
    {
        this.maze = maze;
        this.prefab_debug_astar = prefab_debug_astar;
        SetAstarSourceData(vision, () => maze.Map, canJump, ResetCalcSpace,
                           (Coord c, out Coord n) => {
            AStarData a = calcSpace.At(c);
            Coord f     = a.from;                 //e = a._edge;
            n           = f != Coord.NegativeOne ? f : c;
            return(a._edge);
        },
                           (c, f, e) => {
            AStarData a = calcSpace.At(c);
            a._edge     = e; a.from = f;
        },
                           c => calcSpace.At(c).f, (c, f) => { calcSpace.At(c).f = f; },
                           c => calcSpace.At(c).g, (c, f) => { calcSpace.At(c).g = f; });
        ResetCalcSpace(Map.GetSize());
        Vector3 p    = transform.position;
        Coord   here = maze.GetCoord(p);

        Start(here, here);
        if (prefab_debug_astar != null)
        {
            maze.seen.onChange += RefreshVision;
            vision.onChange    += RefreshVision;
        }
    }
Exemple #2
0
 public Maze(int w, int h, MazeLevel mazeMode)
 {
     width         = w;
     height        = h;
     this.mazeMode = mazeMode;
     maze          = new Elements[height, width];
     randomNumber  = new Random();
 }
Exemple #3
0
 public Score(MazeLevel mazeLevel)
 {
     currentScore   = NEWSCORE;
     this.mazeLevel = mazeLevel.ToString();
     db             = new Database();
     currentScore   = NEWSCORE;
     sound          = new GameSound();
 }
 public void SetDiscovered(bool discovered, Discovery d, MazeLevel maze)
 {
     _discovered      = discovered;
     this.maze        = maze;
     maze.seen[coord] = discovered;
     this.d           = d;
     t       = transform;
     started = 0;
     DoAnimate();
 }
    void ResetLevel()
    {
        ClearLevel();
        // When resetting the level, levelIndex will be set to the next level.
        int       currentLevel = levelIndex == 0 ? LevelCollection.levels.Count - 1 : levelIndex - 1;
        MazeLevel level        = LevelCollection.levels[currentLevel];

        visibilityController.SetupLevel(level);
        mazeState = MazeState.Starting;
    }
Exemple #6
0
        public void Draw(MazeLevel mazeLevel)
        {
            if (prevCells == null)
            {
                FirstDraw(mazeLevel);
            }
            else
            {
                ReDraw(mazeLevel);
            }

            prevCells = mazeLevel.Cells.ToList();
        }
Exemple #7
0
        public Engine(gameMode mode, MazeLevel mazeMode, int length = mazeRenderLength, int width = mazeRenderWidth)
        {
            mazeLength      = length;
            mazeWidth       = width;
            currentGameMode = mode;
            gameSound       = new GameSound();
            this.mazeMode   = mazeMode;

            score         = new Score(this.mazeMode);
            foodGenerator = new FoodGenerator();
            newAI         = new AI(new Random());
            newSmartAI    = new AI(new Random());
        }
Exemple #8
0
        private void MazeLevelToViewModel(MazeLevel mazeLevel, MazeViewModel viewModel)
        {
            viewModel.Cells = new CellType[mazeLevel.Height, mazeLevel.Width];

            foreach (var cell in mazeLevel.Cells
                     .OrderBy(x => x.Y)
                     .ThenBy(x => x.X))
            {
                viewModel.Cells[cell.Y, cell.X] = CellTypeMapper(cell);
                //viewModel.Cells[cell.Y, cell.X].X = cell.X;
                //viewModel.Cells[cell.Y, cell.X].Y = cell.Y;
            }
        }
Exemple #9
0
        private void ReDraw(MazeLevel mazeLevel)
        {
            foreach (var cell in mazeLevel.Cells)
            {
                var prevCell = prevCells.Single(x => x.IsSameCoordinate(cell));
                if (prevCell.GetType() != cell.GetType())
                {
                    Console.SetCursorPosition(cell.X, cell.Y);

                    DrawCell(cell);
                }
            }
        }
Exemple #10
0
        private void FirstDraw(MazeLevel mazeLevel)
        {
            Console.Clear();
            for (int y = 0; y < mazeLevel.Height; y++)
            {
                for (int x = 0; x < mazeLevel.Width; x++)
                {
                    var cell = mazeLevel.Cells.Single(cell => cell.X == x &&
                                                      cell.Y == y);

                    DrawCell(cell);
                }

                Console.WriteLine();
            }
        }
        public LevelState(string name, int startLevel)
            : base(name)
        {
            Camera = new FirstPersonCamera();
            Camera.BoundingRadius = 2.0f;
            Camera.UpdateBoundingVolumes();

            YnG.ShowMouse = (GameConfiguration.EnabledMouse ? true : false);
            YnG.AudioManager.SoundEnabled = GameConfiguration.EnabledSound;
            YnG.AudioManager.MusicVolume  = GameConfiguration.MusicVolume;

            groundPlayerBoundingSphere = new BoundingSphere(Camera.Position, Camera.BoundingRadius);

            _mazeLevel = new MazeLevel(startLevel);
            Add(_mazeLevel);

            _gameHUD = new GameHUD();

            timeTimer = new MazeTimer();

            score = new Score(startLevel);

            gameState        = MazeGameState.Playing;
            elapsedPartyTime = 0;

            soundTimer = new YnTimer(1000, 0);

            if (YnG.AudioManager.SoundEnabled)
            {
                soundTimer.Completed += (s, e) => YnG.AudioManager.SoundEnabled = true;
            }
            else
            {
                soundTimer.Completed += (s, e) => { }
            };

            control = new MazeController(Camera);

            Scene.SceneLight.AmbientIntensity                      = 0.85f;
            Scene.SceneLight.DirectionalLights[0].Enabled          = true;
            Scene.SceneLight.DirectionalLights[0].Direction        = new Vector3(-1, 0.75f, -1);
            Scene.SceneLight.DirectionalLights[0].DiffuseColor     = Color.WhiteSmoke.ToVector3();
            Scene.SceneLight.DirectionalLights[0].DiffuseIntensity = 1.0f;
            Scene.SceneLight.DirectionalLights[0].SpecularColor    = new Vector3(233, 33, 33);
        }
    void LoadNextLevel()
    {
        ClearLevel();
        if (UDLRCameraController.Instance != null)
        {
            UDLRCameraController.Instance.ResetCameraPositions();
        }
        if (levelIndex < LevelCollection.levels.Count)
        {
            MazeLevel level = LevelCollection.levels[levelIndex];
            visibilityController.SetupLevel(level);
            levelIndex = (levelIndex + 1) % LevelCollection.levels.Count;

            // This happens before Start() is called on some components, so we have to force their
            // MazeStateChanged callback whenever they register themselves. Which isn't ideal.
            mazeState = MazeState.Starting;
        }
    }
Exemple #13
0
        public void InitializeMinimap(MazeLevel mazeLevel)
        {
            itemsCount        = mazeLevel.Items.Count;
            itemsCounter.Text = String.Format("{0} / {1}", new object[] { 0, itemsCount });

            miniMap = new MiniMap(mazeLevel.Tiles, mazeLevel.Level.BlockSizes.Width, mazeLevel.Level.BlockSizes.Depth);
            miniMap.LoadContent();
            miniMap.Enabled = GameConfiguration.EnabledMinimapUpdate;
            miniMap.Visible = GameConfiguration.EnabledMinimap;
            Add(miniMap);

            miniMapLeftBorder.Active   = GameConfiguration.EnabledMinimap;
            miniMapBottomBorder.Active = GameConfiguration.EnabledMinimap;

            miniMapBottomBorder.Width    = (int)(miniMap.Width);
            miniMapBottomBorder.Position = new Vector2(miniMap.X, miniMap.Y + miniMap.Height);

            miniMapLeftBorder.Height   = (int)(miniMap.Height + miniMapBottomBorder.ScaledHeight);
            miniMapLeftBorder.Position = new Vector2(miniMap.X - miniMapLeftBorder.ScaledWidth, miniMap.Y);
        }
Exemple #14
0
    private void Start()
    {
        if (maze == null)
        {
            maze = FindObjectOfType <MazeLevel>();
        }
        CharacterMove cm = transform.parent.GetComponent <CharacterMove>();

        if (cm == null)
        {
            Debug.Log(transform.HierarchyPath());
        }
        sc = GetComponent <SphereCollider>();
        cm.callbacks.jumped.AddListener(v => Blink());
        //cm.callbacks.stand.AddListener(v => Blink());
        cm.callbacks.fall.AddListener(() => Blink());
        if (playerLayer == -1)
        {
            LayerMask.NameToLayer("player");
        }
        ResetCalc();
    }
Exemple #15
0
    public void ClaimPlayer(Command.Exec e)
    {
        GameObject npc = DialogManager.Instance.dialogWithWho;

        Global.GetComponent <Team>().AddMember(npc);
        MazeLevel      ml    = Global.GetComponent <MazeLevel>();
        Discovery      d     = EnsureExplorer(npc);
        ParticleSystem ps    = npc.GetComponentInChildren <ParticleSystem>();
        Color          color = ps.main.startColor.color;

        d.discoveredFloor = Color.Lerp(d.discoveredFloor, color, 0.25f);
        d.discoveredWall  = Color.Lerp(d.discoveredWall, color, 0.25f);
        d.discoveredRamp  = Color.Lerp(d.discoveredRamp, color, 0.25f);
        d.maze            = ml;
        Global.GetComponent <ConditionCheck>().DoActivateTest();
        InventoryCollector inv = npc.GetComponentInChildren <InventoryCollector>();

        inv.inventory  = InventoryManager.main;
        inv.autoPickup = true;
        ScriptedDictionary dict = npc.GetComponent <ScriptedDictionary>();

        dict["cooperative"] = true;
    }
Exemple #16
0
 public Gold(int x, int y, MazeLevel mazeLevel, int goldCount)
     : base(x, y, mazeLevel)
 {
     GoldCount = goldCount;
 }
Exemple #17
0
        private static int FindMinimumDistanceBfsPlutonian(PortalMaze maze, int maxDepth)
        {
            var graph    = BuildSimpleGraph(maze);
            var toplevel = new MazeLevel()
            {
                Level = 0
            };
            var entry = graph.Vertices[maze.Entry];
            var exit  = graph.Vertices[maze.Exit];

            var root = graph.Root;

            toplevel.Visited[root.Pos] = true;

            var queue = new Queue <(MazeLevel, PortalGraph.Vertex, int)>();

            queue.Enqueue((toplevel, root, 0));
            while (queue.Any())
            {
                var(level, node, distance) = queue.Dequeue();
                if (node.Pos == exit.Pos && level.Level == 0)
                {
                    return(distance);
                }
                foreach (var e in node.Edges)
                {
                    var nextnode  = e.Key;
                    var nextlevel = level;
                    if (e.Value != 0)
                    {
                        if (e.Value == -1)
                        {
                            if (level.Level > maxDepth)
                            {
                                continue;
                            }
                            if (level.Inner == null)
                            {
                                level.Inner = new MazeLevel()
                                {
                                    Level = level.Level + 1,
                                    Outer = level
                                };
                            }
                            nextlevel = level.Inner;
                        }
                        else
                        {
                            nextlevel = level.Outer;
                            if (nextlevel == null)
                            {
                                continue;
                            }
                        }
                        nextnode = graph.Vertices[nextnode.Pos];
                    }

                    if (nextlevel.Visited[nextnode.Pos])
                    {
                        continue;
                    }
                    nextlevel.Visited[nextnode.Pos] = true;

                    queue.Enqueue((nextlevel, nextnode, distance + 1));
                }
            }
            return(Infinite);
        }
Exemple #18
0
        static void Main(string[] args)
        {
            initialMenuLoad();
            currentGameMode = gameMode.basic;
            MazeLevel mazeMode = ChooseMazeMode();

            using (Engine gameEngine = new Engine(gameMode.basic, mazeMode))
            {
                Elements[,] Maze = gameEngine.initializeGame();

                Elements[,] updateMaze = Maze;

                Draw(Maze);

                do
                {
                    int score = gameEngine.getScore();
                    drawScore(score);

                    ConsoleKeyInfo keyInfo = keyListner.ReadKey(GameStepMilliseconds);
                    switch (keyInfo.Key)
                    {
                    case ConsoleKey.UpArrow:
                        updateMaze = gameEngine.updateGame(Direction.Up);
                        break;

                    case ConsoleKey.DownArrow:
                        updateMaze = gameEngine.updateGame(Direction.Down);
                        break;

                    case ConsoleKey.RightArrow:
                        updateMaze = gameEngine.updateGame(Direction.Right);
                        break;

                    case ConsoleKey.LeftArrow:
                        updateMaze = gameEngine.updateGame(Direction.Left);
                        break;

                    case ConsoleKey.Q:
                        ExitGame = true;
                        break;

                    default:
                        updateMaze = gameEngine.updateGame(Direction.Unchanged);
                        break;
                    }

                    if (updateMaze[0, 0] == Elements.snakeDeath)
                    {
                        ExitGame = true;
                    }
                    Console.Clear();
                    Draw(updateMaze);
                }while (ExitGame == false);

                Console.Write("Please enter your name: ");
                string highScoreName = keyListner.ReadKey(Int32.MaxValue).KeyChar.ToString() + Console.ReadLine();

                gameEngine.setName(highScoreName);
                gameEngine.handleHighSCore();

                EndGame(gameEngine.getScore(), gameEngine.getHighScoreList());
            }
        }
Exemple #19
0
    public void SetupLevel(MazeLevel levelData)
    {
        objectRevealTimer.Clear();
        objectRevealTimer.AddObjectList(new SerialObjectTaskTimer.ObjectTaskList(blocksInitialRevealDelay));
        objectRevealTimer.AddObjectList(new SerialObjectTaskTimer.ObjectTaskList(camRevealDelay));
        objectRevealTimer.AddObjectList(new SerialObjectTaskTimer.ObjectTaskList(panelRevealDelay));

        if (UDLRCameraController.Instance != null)
        {
            CamAnimator[] animators = UDLRCameraController.Instance.GetCameraAnimators();
            CameraPanel.DisplayPosition[] camRevealOrder = { CameraPanel.DisplayPosition.TopLeft,     CameraPanel.DisplayPosition.TopRight,
                                                             CameraPanel.DisplayPosition.BottomRight, CameraPanel.DisplayPosition.BottomLeft };
            for (int i = 0; i < camRevealOrder.Length; ++i)
            {
                if (LevelController.Instance.LevelCollection.levels[LevelController.Instance.levelIndex].cameraToggles[(int)camRevealOrder[i]])
                {
                    foreach (CamAnimator camAnim in animators)
                    {
                        if (camAnim != null && camAnim.CameraPanel.camPosition == camRevealOrder[i])
                        {
                            HideObjectAndAddToRevealList(camAnim.gameObject, (int)VisibilityState.RevealingCameras);
                            break;
                        }
                    }
                }
            }
        }
        foreach (RotatorTriggerData rotator in levelData.rotators)
        {
            GameObject           rotatorTriggerObj = Instantiate(rotatorCubePrefab, rotator.position, Quaternion.identity);
            CameraRotatorTrigger rotatorTrigger    = rotatorTriggerObj.GetComponent <CameraRotatorTrigger>();
            if (rotatorTrigger != null)
            {
                rotatorTrigger.arcType = rotator.arcType;
            }
            HideObjectAndAddToRevealList(rotatorTriggerObj, (int)VisibilityState.RevealingObjects);
        }
        if (InputHandler.Instance != null)
        {
            for (int panelPos = 0; panelPos < (int)CameraPanel.DisplayPosition.NumPositions; ++panelPos)
            {
                if (LevelController.Instance.LevelCollection.levels[LevelController.Instance.levelIndex].cameraToggles[panelPos])
                {
                    GameObject     cube           = Instantiate(playerCubePrefab, levelData.cubeStartPositions[panelPos], Quaternion.identity);
                    CubeController cubeController = cube.GetComponent <CubeController>();
                    Assert.IsNotNull(cubeController);
                    InputHandler.Instance.SetCubeController(panelPos, cubeController);
                    cubeController.associatedPanelPosition = (CameraPanel.DisplayPosition)panelPos;
                    cube.layer = LayerMask.NameToLayer(CameraPanel.PositionLayerNames[panelPos]);
                    HideObjectAndAddToRevealList(cube, (int)VisibilityState.RevealingObjects);
                    GameObject goal           = Instantiate(goalCubePrefab, levelData.goalPositions[panelPos], Quaternion.identity);
                    MazeGoal   goalController = goal.GetComponent <MazeGoal>();
                    Assert.IsNotNull(goalController);
                    goal.layer = LayerMask.NameToLayer(CameraPanel.PositionLayerNames[panelPos]);
                    HideObjectAndAddToRevealList(goal, (int)VisibilityState.RevealingObjects);
                    goalController.associatedDisplayPosition = (CameraPanel.DisplayPosition)panelPos;
                    if (UDLRCameraController.Instance != null)
                    {
                        MeshRenderer meshRenderer = cube.GetComponent <MeshRenderer>();
                        if (meshRenderer != null)
                        {
                            meshRenderer.material.SetColor("_EmissionColor", UDLRCameraController.Instance.GetCameraAnimators()[panelPos].GetCamObjColour());
                        }
                        MeshRenderer goalMeshRenderer = goal.GetComponent <MeshRenderer>();
                        if (goalMeshRenderer != null)
                        {
                            goalMeshRenderer.material.SetColor("_EmissionColor", UDLRCameraController.Instance.GetCameraAnimators()[panelPos].GetCamObjColour());
                        }
                    }
                }
            }
        }
        if (UDLRCameraController.Instance != null)
        {
            UDLRCameraController.Instance.panelController.enabled = false;
            objectRevealTimer.AddObjectToObjectsList(UDLRCameraController.Instance.gameObject, (int)VisibilityState.RevealingPanel);
        }
        objectRevealTimer.BeginObjectTasks();
    }
Exemple #20
0
 public Wall(int x, int y, MazeLevel mazeLevel)
     : base(x, y, mazeLevel)
 {
 }
Exemple #21
0
 protected BaseCell(int x, int y, MazeLevel mazeLevel)
 {
     X         = x;
     Y         = y;
     MazeLevel = mazeLevel;
 }
Exemple #22
0
 public Ground(int x, int y, MazeLevel mazeLevel)
     : base(x, y, mazeLevel)
 {
 }