コード例 #1
0
 void LoadMainMenu()
 {
     m_levelLoad.LoadLevel(0);
     FloorGen.GetFloorPositions().Clear();
     FloorGen.GetFloorTilePositions().Clear();
     Time.timeScale = 1;
 }
コード例 #2
0
 void Update()
 {
     if (FloorGen.GetFloorPositions().Count > 0 && !m_enemyPlaced)
     {
         Vector3Int position           = FloorGen.GetFloorPositions()[Random.Range(0, FloorGen.GetFloorPositions().Count)];
         Vector3    positionReadjusted = new Vector3(position.x + 0.5f, position.y + 0.5f, 0);
         transform.position = positionReadjusted;
         m_enemyPlaced      = true;
     }
     if (ShouldMove && m_canSeePlayer)
     {
         Movement();
     }
     if (FoundPlayer)
     {
         RaycastHit2D hit = Physics2D.Raycast(transform.position, -(transform.position - m_player.transform.position), LayerMask.GetMask("Level"));
         if (hit.collider != null)
         {
             if (hit.transform.gameObject.tag.Contains("Player"))
             {
                 m_canSeePlayer = true;
             }
             else
             {
                 m_canSeePlayer = false;
             }
         }
     }
     Fire();
     if (m_currentHealth <= 0)
     {
         transform.parent.GetComponent <EnemySpawner>().Enemies.Remove(gameObject);
         Destroy(gameObject);
     }
 }
コード例 #3
0
 void LevelLoad()
 {
     FloorGen.GetFloorPositions().Clear();
     FloorGen.GetFloorTilePositions().Clear();
     m_fileManager.SaveJson();
     m_levelLoad.LoadLevel(0);
     m_levelLoad.FreeMode  = false;
     m_levelLoad.ScoreMode = false;
     m_levelLoad.ExitMode  = false;
     m_levelLoad.Seed      = 0;
     m_levelLoad.WorldName = "";
     Time.timeScale        = 1;
 }
コード例 #4
0
 private void Update()
 {
     if (m_buildEnemies)
     {
         AmountToSpawn = FloorGen.GetFloorPositions().Count / 100;
         for (int i = 0; i < AmountToSpawn; ++i)
         {
             GameObject clone = Instantiate(EnemyPrefab);
             clone.transform.SetParent(transform);
             Enemies.Add(clone);
         }
         m_buildEnemies = false;
     }
 }
コード例 #5
0
 private void Update()
 {
     if (!m_lightsPlaced)
     {
         for (int i = 0; i < LightAmount; ++i)
         {
             Vector3Int position           = FloorGen.GetFloorPositions()[Random.Range(0, FloorGen.GetFloorPositions().Count)];
             Vector3    positionReadjusted = new Vector3(position.x + 0.5f, position.y + 0.5f, 0);
             Instantiate(LightPrefab, positionReadjusted, Quaternion.identity);
             FloorGen.GetFloorPositions().Remove(position);
         }
         m_lightsPlaced = true;
     }
 }
コード例 #6
0
 void ReloadLevel()
 {
     Time.timeScale = 1;
     FloorGen.GetFloorPositions().Clear();
     FloorGen.GetFloorTilePositions().Clear();
     m_levelLoad.LoadLevel(SceneManager.GetActiveScene().buildIndex);
     if (m_manager.ScoreMode)
     {
         m_manager.Player.GetComponent <Scoring>().CurrentScore = 0;
     }
     if (m_manager.ExitMode)
     {
         m_manager.Player.transform.position = new Vector3(0, 0, 0);
     }
 }
コード例 #7
0
    public void WinState()
    {
        if (m_dungeon == null)
        {
            m_dungeon = GameObject.Find("Map").GetComponent <BuildDungeon>();
        }
        //  m_fileManager.TileSetter();
        if (ScoreMode && !m_scoresPlaced)
        {
            m_scoreAmount = FloorGen.GetFloorPositions().Count / 4;
            for (int i = 0; i < m_scoreAmount; ++i)
            {
                if (FloorGen.GetFloorPositions().Count > 1)
                {
                    Vector3Int position           = FloorGen.GetFloorPositions()[Random.Range(0, FloorGen.GetFloorPositions().Count)];
                    Vector3    positionReadjusted = new Vector3(position.x + 0.5f, position.y + 0.5f, 0);
                    FloorGen.GetFloorPositions().Remove(position);
                    GameObject scoreClone = Instantiate(ScorePrefab, positionReadjusted, Quaternion.identity, transform);
                    scoreClone.GetComponent <ScorePoint>().ScoreWorth = Random.Range(1, 25);
                    Scores.Add(scoreClone);
                }
            }
            for (int i = 0; i < Scores.Count; ++i)
            {
                m_totalScore += Scores[i].GetComponent <ScorePoint>().ScoreWorth;
            }
            m_scoresPlaced = true;
        }

        if (m_scoresPlaced)
        {
            m_totalScoreNeeded   = m_totalScore / 2;
            ScoreNeededText.text = "Score Needed: " + m_totalScoreNeeded;
            if (Player.GetComponent <Scoring>().CurrentScore >= m_totalScoreNeeded)
            {
                WinScreen.SetActive(true);
            }
        }
    }
コード例 #8
0
 public void SetExit()
 {
     if (FloorGen.GetFloorPositions().Count > 0 && !EndPointPlaced && m_playerMovement.GetPlayerPlaced())
     {
         List <Vector3Int> FloorPoints    = new List <Vector3Int>();
         Vector3Int        playerMovement = new Vector3Int((int)m_playerMovement.transform.position.x, (int)m_playerMovement.transform.position.y, 0);
         for (int i = 0; i < FloorGen.GetFloorPositions().Count; ++i)
         {
             if (Vector3Int.Distance(FloorGen.GetFloorPositions()[i], playerMovement) > 20)
             {
                 FloorPoints.Add(FloorGen.GetFloorPositions()[i]);
             }
         }
         Vector3Int position           = FloorPoints[Random.Range(0, FloorPoints.Count)];
         Vector3    positionReadjusted = new Vector3(position.x + 0.5f, position.y + 0.5f, 0);
         transform.position = positionReadjusted;
         if (transform.position != m_playerMovement.transform.position)
         {
             EndPointPlaced = true;
         }
         Debug.Log("Setting exit : " + transform.position);
     }
 }
コード例 #9
0
    public void LoadJson()
    {
        string LoadString = SaveLoadSystem.Load(WorldName);

        if (LoadString != null)
        {
            Save = JsonUtility.FromJson <SaveFile>(LoadString);
            Random.InitState(Save.Seed);
            GameObject clone = Instantiate(Dungeon);
            clone.transform.position = new Vector3(0, 0, 0);
            clone.transform.SetParent(transform);
            SquareRoomAmount  = Save.SquareRoomAmount;
            CircleRoomAmount  = Save.CircleRoomAmount;
            TShapeRoomAmount  = Save.TShapeRoomAmount;
            LShapeRoomAmount  = Save.LShapeRoomAmount;
            DiamondRoomAmount = Save.DiamondRoomAmount;
            XDimension        = Save.XDimension;
            YDimension        = Save.YDimension;
            if (Save.DigPower > 1)
            {
                GameObject.Find("Player").GetComponent <DigTier>().CurrentDigTier = Save.DigPower;
            }
            clone.transform.GetChild(0).GetComponent <BuildDungeon>().Build();
            InventoryBackpack backpack = GameObject.Find("Player").GetComponent <InventoryBackpack>();
            for (int i = 0; i < Save.ItemPacks.Count; ++i)
            {
                if (backpack.Storage.All(t => t.ID != Save.ItemPacks[i].InventorySlot.ID))
                {
                    backpack.Storage.Add(Save.ItemPacks[i].InventorySlot);
                }
            }
            for (int i = 0; i < backpack.Storage.Count; ++i)
            {
                for (int a = 0; a < TileManager.AllTiles.Count; ++a)
                {
                    if (backpack.Storage[i].ID == TileManager.AllTiles[a].ID)
                    {
                        for (int b = 0; b < backpack.Storage[i].Items.Count; ++b)
                        {
                            backpack.Storage[i].Items[b]        = TileManager.AllTiles[a].Item;
                            backpack.Storage[i].Items[b].ItemID = TileManager.AllTiles[a].Item.ItemID;
                        }
                    }
                }
            }
            TilesToSave = Save.DataPacks;
            TilePlacer(Save, clone.transform.GetChild(0).GetComponent <Tilemap>(), clone.transform.GetChild(1).GetComponent <Tilemap>());
            GameObject.Find("Player").transform.position = Save.PlayerPosition;
            GameObject.Find("Player").GetComponent <PlayerMovement>().SetPlayerPlaced(true);
            if (Save.ModeName == "FreeMode")
            {
                GameObject.Find("GameManager").GetComponent <GameManager>().FreeMode = true;
            }
            if (Save.ModeName == "ScoreMode")
            {
                GameObject.Find("GameManager").GetComponent <GameManager>().ScoreMode = true;
            }
            if (Save.ModeName == "ExitMode")
            {
                GameObject.Find("GameManager").GetComponent <GameManager>().ExitMode = true;
            }
        }
        else
        {
            if (SetSeed == 0)
            {
                Random.InitState(123123);
            }
            else
            {
                Random.InitState(SetSeed);
            }
            GameObject clone = Instantiate(Dungeon);
            clone.transform.position = new Vector3(0, 0, 0);
            clone.transform.SetParent(transform);
            clone.transform.GetChild(0).GetComponent <BuildDungeon>().Build();
            if (FloorGen.GetFloorPositions().Count > 0)
            {
                Vector3Int position           = FloorGen.GetFloorPositions()[Random.Range(0, FloorGen.GetFloorPositions().Count)];
                Vector3    positionReadjusted = new Vector3(position.x + 0.5f, position.y + 0.5f, 0);
                GameObject.Find("Player").transform.position = positionReadjusted;
                GameObject.Find("Player").GetComponent <PlayerMovement>().SetPlayerPlaced(true);
                FloorGen.GetFloorPositions().Remove(position);
            }
            SaveJson();
        }
    }
コード例 #10
0
    public void Build()
    {
        m_fileManager = transform.parent.parent.GetComponent <FileManager>();
        if (!m_fileManager.Save.SeedSet)
        {
            m_fileManager.Save.Seed    = Seed;
            m_fileManager.Save.SeedSet = true;
        }
        Stopwatch SW = new Stopwatch();

        SW.Start();
        TileManager.LoadTileManager();
        m_dungeonDimensions = new Vector2Int(m_fileManager.XDimension, m_fileManager.YDimension);
        DungeonUtility.DungeonSetup(m_dungeonDimensions, m_tilemap);
        WallGen.SetWallSizes(m_wallDimensions);
        WallGen.SetWallsTileMap(m_walls);
        for (int i = 0; i < m_fileManager.SquareRoomAmount; ++i)
        {
            DungeonUtility.PickBuildPoint();
            WallGen.RandomiseWallSizes(m_wallSizesSquare[0], m_wallSizesSquare[1], m_wallSizesSquare[2], m_wallSizesSquare[3]);
            FloorGen.Square();
            if (UseMiniMapIcons)
            {
                Vector2 pos = new Vector2(DungeonUtility.GetBuildPoint().x + WallGen.GetWallDimensions().x / 2, DungeonUtility.GetBuildPoint().y + WallGen.GetWallDimensions().y / 2);
                Instantiate(SquareRoom, pos, Quaternion.identity);
            }
        }
        for (int i = 0; i < m_fileManager.LShapeRoomAmount; ++i)
        {
            DungeonUtility.PickBuildPoint();
            WallGen.RandomiseWallSizes(m_wallSizesSquare[0], m_wallSizesSquare[1], m_wallSizesSquare[2], m_wallSizesSquare[3]);
            int directionRandom = UnityEngine.Random.Range(0, 4);
            FloorGen.LShape(m_wallLengthLShape, m_wallHeightLShape, directionRandom);
        }
        for (int i = 0; i < m_fileManager.TShapeRoomAmount; ++i)
        {
            DungeonUtility.PickBuildPoint();
            int directionRandom = UnityEngine.Random.Range(0, 4);
            int stemWidth       = UnityEngine.Random.Range(2, m_wallSizesTShape[0]);
            int stemHeight      = UnityEngine.Random.Range(2, m_wallSizesTShape[1]);
            int roomLength      = UnityEngine.Random.Range(2, m_wallSizesTShape[2]);
            int roomHeight      = UnityEngine.Random.Range(2, m_wallSizesTShape[3]);
            FloorGen.TShape(stemWidth, stemHeight, roomLength, roomHeight, directionRandom);
        }
        for (int i = 0; i < m_fileManager.CircleRoomAmount; ++i)
        {
            int randomCircleSize = UnityEngine.Random.Range(1, m_circleStartSizeMax);
            DungeonUtility.PickBuildPoint();
            m_circleMiddleAmount = randomCircleSize;
            FloorGen.Circle(randomCircleSize, m_circleMiddleAmount);
            if (UseMiniMapIcons)
            {
                Vector2 pos = new Vector2(DungeonUtility.GetBuildPoint().x + m_circleMiddleAmount / 2, DungeonUtility.GetBuildPoint().y + m_circleMiddleAmount * 2);
                Instantiate(CircleRoom, pos, Quaternion.identity);
            }
        }
        for (int i = 0; i < m_fileManager.DiamondRoomAmount; ++i)
        {
            int RandomMaxRowAmount = UnityEngine.Random.Range(10, m_diamondMaxRowAmount);
            DungeonUtility.PickBuildPoint();
            FloorGen.Diamond(1, RandomMaxRowAmount);
            if (UseMiniMapIcons)
            {
                Vector2 pos = new Vector2(DungeonUtility.GetBuildPoint().x, DungeonUtility.GetBuildPoint().y + RandomMaxRowAmount / 2);
                Instantiate(DiamondRoom, pos, DiamondRoom.transform.rotation);
            }
        }
        for (int i = 0; i < FloorGen.GetFloorTilePositions().Count; ++i)
        {
            FloorGen.PlaceFloorTile(FloorGen.GetFloorTilePositions()[i]);
        }
        m_pathAmount += (m_fileManager.DiamondRoomAmount + m_fileManager.CircleRoomAmount + m_fileManager.SquareRoomAmount + m_fileManager.LShapeRoomAmount + m_fileManager.TShapeRoomAmount) / 4;
        for (int i = 0; i < m_pathAmount; ++i)
        {
            ConnectRoom.PlacePositions(i);
            ConnectRoom.FindOtherRoom();
        }
        WallGen.PlaceWalls();

        GameObject.Find("Player").GetComponent <PlaceTile>().FillTilesList();
        SW.Stop();
        TimeSpan ts = SW.Elapsed;

        UnityEngine.Debug.Log("Building Dungeon Took: " + ts.Milliseconds + " ms");
    }