public override DungeonLevel Generate(int levelIndex, Dungeons.GenerationInfo info = null, LayouterOptions opt = null) { var revealAllNodes = info != null ? info.RevealAllNodes : false; if (info is Roguelike.Generators.GenerationInfo rgi && MaxLevelIndex == 0) { MaxLevelIndex = rgi.MaxLevelIndex; } this.diff = Roguelike.Generators.GenerationInfo.Difficulty; var options = opt ?? new LayouterOptions() { RevealAllNodes = revealAllNodes }; LevelIndex = levelIndex; //generate level var baseLevel = base.Generate(levelIndex, info, options); var level = baseLevel as Roguelike.TileContainers.GameLevel; level.Index = levelIndex; OnLevelGenerated(level); // PopulateDungeonLevel(level); return(level); }
public TileContainers.GameLevel GenerateLevel(int levelIndex, Dungeons.GenerationInfo gi = null, bool canSetActive = true) { TileContainers.GameLevel level = null; if (LevelGenerator != null) { if (LevelGenerator.MaxLevelIndex > 0 && levelIndex > LevelGenerator.MaxLevelIndex) { throw new Exception("levelIndex > LevelGenerator.MaxLevelIndex"); } LevelGenerator.LevelIndex = levelIndex; var generInfo = gi; if (generInfo == null) { generInfo = new Generators.GenerationInfo(); //(generInfo as Roguelike.Generators.GenerationInfo).MaxLevelIndex = LevelGenerator.LevelIndex; } level = LevelGenerator.Generate(levelIndex, generInfo) as TileContainers.GameLevel; var merch = this.Container.GetInstance <Merchant>(); level.SetTileAtRandomPosition(merch); this.levels.Add(level); } if (canSetActive && levelIndex == 0) { GameManager.SetContext(level, AddHero(level), GameContextSwitchKind.NewGame); } return(level); }
public override List <DungeonNode> CreateDungeonNodes(Dungeons.GenerationInfo info = null) { stairsUp = null; var mazeNodes = base.CreateDungeonNodes(info); CreateDynamicTiles(mazeNodes); return(mazeNodes); }
protected override void OnCreate(DungeonNode dungeon, int w, int h, Dungeons.GenerationInfo gi, int nodeIndex) { dungeon.Create(w, h, gi, nodeIndex); }
protected virtual void GenerateRoomContent(int nodeIndex, Dungeons.GenerationInfo gi, DungeonNode node) { var roomGen = Container.GetInstance <RoomContentGenerator>(); roomGen.Run(node, LevelIndex, nodeIndex, 0, gi as GenerationInfo); }
protected override Dungeons.TileContainers.DungeonNode CreateNode(int nodeIndex, Dungeons.GenerationInfo gi) { var node = base.CreateNode(nodeIndex, gi); if (!node.Created) { return(node); } if ((LevelIndex > 0 || StairsUpOnLevel0) && (!node.Secret && stairsUp == null)) { AddStairsUp(node); } GenerateRoomContent(nodeIndex, gi, node); var barrels = node.GetTiles <Barrel>(); bool zero1 = barrels.Any(i => i.Level <= 0); bool zero2 = node.GetTiles <Chest>().Any(i => i.Level <= 0); Debug.Assert(!zero1 && !zero2); return(node); }