예제 #1
0
 public ISprite MakeSprite(DungeonEnum spriteType, Vector2 location, bool canBeBombed = false)
 {
     return(spriteType switch
     {
         DungeonEnum.RoomFloor => new RoomFloor(texture, location),
         DungeonEnum.RoomBorder => new RoomBorder(texture, location),
         DungeonEnum.Darkness => new Darkness(texture, location),
         DungeonEnum.DownWall => new Wall(texture, location, Direction.North, game.Rooms[roomIndex], canBeBombed),
         DungeonEnum.RightWall => new Wall(texture, location, Direction.West, game.Rooms[roomIndex], canBeBombed),
         DungeonEnum.LeftWall => new Wall(texture, location, Direction.East, game.Rooms[roomIndex], canBeBombed),
         DungeonEnum.UpWall => new Wall(texture, location, Direction.South, game.Rooms[roomIndex], canBeBombed),
         DungeonEnum.DownOpenDoor => new OpenDoor(texture, location, Direction.North, game.Rooms[roomIndex]),
         DungeonEnum.RightOpenDoor => new OpenDoor(texture, location, Direction.West, game.Rooms[roomIndex]),
         DungeonEnum.LeftOpenDoor => new OpenDoor(texture, location, Direction.East, game.Rooms[roomIndex]),
         DungeonEnum.UpOpenDoor => new OpenDoor(texture, location, Direction.South, game.Rooms[roomIndex]),
         DungeonEnum.DownLockedDoor => new LockedDoor(texture, location, Direction.North, game.Rooms[roomIndex]),
         DungeonEnum.RightLockedDoor => new LockedDoor(texture, location, Direction.West, game.Rooms[roomIndex]),
         DungeonEnum.LeftLockedDoor => new LockedDoor(texture, location, Direction.East, game.Rooms[roomIndex]),
         DungeonEnum.UpLockedDoor => new LockedDoor(texture, location, Direction.South, game.Rooms[roomIndex]),
         DungeonEnum.DownShutDoor => new ShutDoor(texture, location, Direction.North, game.Rooms[roomIndex]),
         DungeonEnum.RightShutDoor => new ShutDoor(texture, location, Direction.West, game.Rooms[roomIndex]),
         DungeonEnum.LeftShutDoor => new ShutDoor(texture, location, Direction.East, game.Rooms[roomIndex]),
         DungeonEnum.UpShutDoor => new ShutDoor(texture, location, Direction.South, game.Rooms[roomIndex]),
         DungeonEnum.DownBombedOpening => new BombedOpening(texture, location, Direction.North, game.Rooms[roomIndex]),
         DungeonEnum.RightBombedOpening => new BombedOpening(texture, location, Direction.West, game.Rooms[roomIndex]),
         DungeonEnum.LeftBombedOpening => new BombedOpening(texture, location, Direction.East, game.Rooms[roomIndex]),
         DungeonEnum.UpBombedOpening => new BombedOpening(texture, location, Direction.South, game.Rooms[roomIndex]),
         DungeonEnum.DarkRoom => new DarkRoom(texture, location, game),
         _ => throw new ArgumentException("Invalid sprite! " + spriteType.ToString() + " Sprite factory failed."),
     });
    void Load()
    {
        if (File.Exists(Application.persistentDataPath + "/" + SaveFileScript.CurrentSaveFile.ToString() + "/" + DungeonName.ToString() + "/BaseDungeon.dat"))
        {
            BinaryFormatter bf      = new BinaryFormatter();
            FileStream      file    = File.Open(Application.persistentDataPath + "/" + SaveFileScript.CurrentSaveFile.ToString() + "/" + DungeonName.ToString() + "/BaseDungeon.dat", FileMode.Open);
            DungeonInfo     dungeon = (DungeonInfo)bf.Deserialize(file);
            file.Close();

            GeneratedLevelIndexes = dungeon.GeneratedLevels;
            MaxLevelIndex         = dungeon.MaxLevels;
            BossDeceased          = dungeon.bossDeceased;
            CurrentLevelIndex     = dungeon.CurrentLevel;


            if (dungeon.isCurrentDungeon)
            {
                CurrentDungeon = this;
            }



            List <GameObject> children = new List <GameObject>();

            // make sure we clear out all the old levels if any
            foreach (Transform child in gameObject.transform)
            {
                children.Add(child.gameObject);
            }
            foreach (GameObject child in children)
            {
                Destroy(child);
            }

            //recreate all the levels that we had
            for (int i = 0; i < GeneratedLevelIndexes; i++)
            {
                GameObject level = Instantiate(Resources.Load("Level") as GameObject);
                level.transform.SetParent(gameObject.transform);

                level.transform.SetSiblingIndex(i);

                level.GetComponent <LevelScript>().Load();



                Levels.Add(level.GetComponent <LevelScript>());
            }
        }
    }