public void Initialize() { _levels = new Level[_maxLevels]; ArrayExt.Converters[typeof(GridType)] = (b) => { return(GridTypeEnum.Convert((GridType)b)); }; ArrayExt.Converters[typeof(GridSpace)] = (b) => { GridSpace s = b as GridSpace; if (s == null) { return(GridTypeEnum.Convert(GridType.NULL)); } return(GridTypeEnum.Convert(s.Type)); }; ArrayExt.Converters[typeof(GenSpace)] = (b) => { GenSpace s = b as GenSpace; if (s == null) { return(GridTypeEnum.Convert(GridType.NULL)); } return(s.GetChar()); }; ArrayExt.Converters[typeof(IGridSpace)] = (b) => { IGridSpace s = b as IGridSpace; if (s == null) { return(GridTypeEnum.Convert(GridType.NULL)); } if (s is GenSpace) { return(((GenSpace)s).GetChar()); } return(GridTypeEnum.Convert(s.Type)); }; if (Seed == -1) { Seed = Probability.Rand.Next(); } System.Random rand = new System.Random(Seed); for (int i = 0; i < _maxLevels; i++) { _levelSeeds[i] = rand.Next(); } LevelBuilder.Initialize(); foreach (IInitializable init in this.FindAllDerivedObjects <IInitializable>()) { init.Init(); } #region DEBUG if (BigBoss.Debug.logging(Logs.LevelGenMain)) { BigBoss.Debug.w(Logs.LevelGenMain, "Random seed int: " + Seed); } #endregion }
public static void MergeIn(this Container2D <GenSpace> arr, int x, int y, GenDeploy deploy, Theme theme, GridType type = GridType.Floor, bool typeOnlyDefault = true, bool themeOnlyDefault = false) { GenSpace space; if (!arr.TryGetValue(x, y, out space)) { space = new GenSpace(type, theme, x, y); arr[x, y] = space; } else { if (!themeOnlyDefault) { space.Theme = theme; } if (!typeOnlyDefault) { space.Type = type; } } space.AddDeploy(deploy, x, y); }
protected bool HandleEmptyDeploy(GenSpace space, System.Random rand) { space.Deploys = new List <GenDeploy>(1); ThemeElement element; switch (space.Type) { case GridType.Wall: element = space.Theme.Wall.SmartElement.Get(rand); break; case GridType.Door: element = space.Theme.Door.SmartElement.Get(rand); break; case GridType.Chest: element = space.Theme.Chest.SmartElement.Get(rand); break; case GridType.NULL: return(false); case GridType.StairPlace: case GridType.Floor: case GridType.SmallLoot: default: element = space.Theme.Floor.SmartElement.Get(rand); break; } if (element == null) { throw new ArgumentException("Theme " + space.Theme.GetType() + " had no elements for type: " + space.Type); } GenDeploy deploy = new GenDeploy(element); space.AddDeploy(deploy, 0, 0); return(true); }
public static void SetTo(this Container2D <GenSpace> cont, int x, int y, GridType type, Theme theme) { cont[x, y] = new GenSpace(type, theme, x, y); }