public IEnumerator theme_asset_is_null()
        {
            SceneManager.LoadScene(0);
            MapGenerator generator = GameObject.Find("MapGenerator").GetComponent <MapGenerator>();

            generator.Generate();
            GridAssetSpawner spawner     = generator.gameObject.GetComponent <GridAssetSpawner>();
            GridAssets       assets      = new GameObject().AddComponent <GridAssets>();
            GameObject       assetPrefab = new GameObject();

            GridAssetTheme[] themes = new GridAssetTheme[3];
            for (int i = 0; i < themes.Length; ++i)
            {
                themes[i] = ScriptableObject.CreateInstance <GridAssetTheme>();
                themes[i].SelectedTheme = GridAssetTheme.Theme.Forest;
            }
            themes[0].Sprites = new Sprite[9];
            for (int i = 0; i < themes[0].Sprites.Length; ++i)
            {
                themes[0].Sprites[i] = Sprite.Create(new Texture2D(10, 10), new Rect(), Vector2.down);
            }
            assetPrefab.AddComponent <Tile>();
            assets.Init(assetPrefab, themes);
            spawner.Init(assets);
            yield return(new WaitForEndOfFrame());

            Assert.Throws <System.Exception>(() => generator.Generate(), $"The {generator.MapTheme.ToString()} (attached to: {spawner.name}) is null!");
        }
Beispiel #2
0
        public void grid_generation_events_firing()
        {
            #region Arrange
            GridAssetTheme[] themes = new GridAssetTheme[1];
            themes[0] = ScriptableObject.CreateInstance <GridAssetTheme>();
            themes[0].SelectedTheme      = 0;
            themes[0].TileDecorations    = new TileDecoration[1];
            themes[0].TileDecorations[0] = ScriptableObject.CreateInstance <TileDecoration>();
            themes[0].Sprites            = new Sprite[9];
            for (int i = 0; i < themes[0].Sprites.Length; ++i)
            {
                themes[0].Sprites[i] = Sprite.Create(new Texture2D(10, 10), new Rect(), new Vector2(0, 0));
            }
            GridAssets assets      = new GameObject().AddComponent <GridAssets>();
            GameObject assetPrefab = new GameObject();
            assetPrefab.AddComponent <SpriteRenderer>();
            assetPrefab.AddComponent <Tile>();
            assetPrefab.GetComponent <Tile>().TilePositionOnGrid = 0;
            assets.Init(assetPrefab, themes);
            GridAssetSpawner spawner = new GameObject().AddComponent <GridAssetSpawner>();
            spawner.Init(assets);
            GridContainer container = new GameObject().AddComponent <GridContainer>();
            MapGenerator  generator = new GameObject().AddComponent <MapGenerator>();
            generator.Init(spawner, container, 0);
            bool gridGenerating = false;
            bool gridGenerated  = false;
            generator.OnMapGenerating += () => { gridGenerating = true; };
            generator.OnMapGenerated  += () => { gridGenerated = true; };
            #endregion

            Assert.DoesNotThrow(() => generator.Generate());
            Assert.True(gridGenerating);
            Assert.True(gridGenerated);
            Assert.NotNull(generator.Grid);
        }