Example #1
0
 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
 }
Example #2
0
    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);
    }
Example #3
0
    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);
    }
Example #4
0
 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);
 }