Example #1
0
        public void Setup(Map.Builder.IBuilder builder, Map.TileDataMap tileDataMap)
        {
            Builder     = builder;
            TileDataMap = tileDataMap;

            ApplyTileData();
        }
Example #2
0
        public void DrawUpdate(Map.Builder.IBuilder builder)
        {
            switch (_builderType)
            {
            case Map.Builder.BuilderConst.BuilderType.Split:
                _coroutine = StartCoroutine(DrawUpdate_Split(builder));
                break;

            default:
                break;
            }
        }
Example #3
0
        /// <summary>
        /// 初期処理
        /// </summary>
        void Awake()
        {
            _view.Setup();

            _view.OnExecute = (setting_) =>
            {
                var builderData = new Map.Builder.BuilderData();

                _builder = _builderFactory.Create(Map.Builder.BuilderConst.BuilderType.Split);
                _builder.Initialize(setting_.Width, setting_.Height, 1);

                _builder.SetData(builderData);

                _buildeEnumerator = _builder.ExecuteDebug(null);

                // ランダム値を変化させたい場合
                if (setting_.RandomSeed > 0)
                {
                    Random.InitState(setting_.RandomSeed);
                }

                _view.MapDrawView.Setup(setting_.Width, setting_.Height, Map.Builder.BuilderConst.BuilderType.Split);
                _view.MapDrawView.DrawUpdate(_builder);

                _search.Setup(setting_.Width, setting_.Height);
                _search.SetSearchParam(_builder.TileDataMap);

                var size = setting_.Width * setting_.Height;
                for (int i = 0; i < size; ++i)
                {
                    if (!_view.MapDrawView.TryGetSpriteRenderer(i, out var renderer))
                    {
                        continue;
                    }

                    _search.SetFollowTargets(i, renderer.transform);
                }
            };
        }
Example #4
0
        private IEnumerator DrawUpdate_Split(Map.Builder.IBuilder builder)
        {
            var splitBuilder = builder as Map.Builder.Split.Builder;

            if (splitBuilder == null)
            {
                yield break;
            }

            void Draw(RectInt rect, int colorIndex)
            {
                for (int y = rect.yMin; y < rect.yMax; ++y)
                {
                    for (int x = rect.xMin; x < rect.xMax; ++x)
                    {
                        //DrawByIndex(y * _width + x, tileFlag, colorIndex);
                        var draw  = _drawSprites[y * _width + x];
                        var color = _otherColor[Mathf.Min(colorIndex, _otherColor.Length - 1)];

                        draw.color = color;
                    }
                }
            }

            void DrawByTileData(Map.TileData tileData, Const.TileFlag tileFlag)
            {
                var draw = _drawSprites[tileData.Index];

                if (TryGetColor(tileFlag, out Color color))
                {
                    draw.color = color;

                    var debugTile = draw.GetComponent <DebugTile>();
                    if (debugTile == null)
                    {
                        return;
                    }

                    debugTile.TileFlag = tileFlag;
                    debugTile.SetTileData(tileData);
                }
            }

            // 一つ先にすすめる
            var enumerator = builder.ExecuteDebug(null);

            while (enumerator.MoveNext())
            {
                // 区画情報
                var mapRect = splitBuilder.MapRect;
                for (int i = 0; i < mapRect.RectCount; ++i)
                {
                    var data = mapRect[i];
                    Draw(data.rect, i);
                }

                var tileDataMap = splitBuilder.TileDataMap;
                foreach (var tileData in tileDataMap)
                {
                    DrawByTileData(tileData, tileData.Flag);
                }

                yield return(new WaitForSeconds(enumerator.Current));
            }
        }