예제 #1
0
        public void AttachDeco(CTile tile, EDeco deco)
        {
            var decoParam = DecoTable.Instance.Table[deco];
            var data      = this.GetDecoData(decoParam);
            var sprite    = this._sprites[ListUtil <int> .GetRandomElement(decoParam.Sprites)];

            FTile.SetEnvironmentFlagTrue(tile.GetFlags());
            var handle = new GameObject();
            var model  = new MDeco(deco);

            model.SetData(data);
            var view       = new VDeco(deco);
            var controller = new CDeco();

            controller.SetGameHandle(handle);
            controller.SetModel(model);
            controller.SetView(view);
            var renderer = handle.AddComponent <SpriteRenderer>();

            tile.SetCurrent(controller);
            renderer.sprite = sprite;
            renderer.transform.SetParent(tile.Handle.transform);
            renderer.transform.position = tile.Handle.transform.position;
            var tileRenderer = tile.Handle.GetComponent <SpriteRenderer>();

            renderer.sortingLayerName = tileRenderer.sortingLayerName;
            renderer.sortingOrder     = tileRenderer.sortingOrder + 1;
        }
예제 #2
0
 public MTile()
 {
     this._adjacent  = new List <MTile>();
     this._flags     = new FTile();
     this._height    = 1;
     this._liquid    = false;
     this._particles = new ParticleContainer();
 }
예제 #3
0
        public static FTile SquareError()
        {
            var layer = new FTile();

            var(input, res)            = FSymbol.New("input", "res");
            layer.Sum((i, j) => res[i] = input[j] * input[j]);

            return(layer);
        }
예제 #4
0
        public static FTile Dense()
        {
            var layer = new FTile();

            var(input, w, b, res)      = FSymbol.New("input", "W", "b", "res");
            layer.Sum((i, j) => res[i] = w[i, j] * input[j] + b[i]);
            layer.Sum(i => res[i]      = Activations.ReLU(res[i]));

            return(layer);
        }
예제 #5
0
        public override void BuildLandmark(CTile tile)
        {
            var lmParams  = LandmarkTable.Instance.Table[ELandmark.Pond];
            int radius    = RNG.Instance.Next(lmParams.RadiusMin, lmParams.RadiusMax);
            var mTiles    = tile.Model.GetAoETiles(radius - 1);
            int minHeight = 3;

            var set = new List <MTile>();

            foreach (var mTile in mTiles)
            {
                if (!set.Contains(mTile))
                {
                    set.Add(mTile);
                }
                foreach (MTile neighbor in mTile.GetAdjacent())
                {
                    if (!set.Contains(neighbor))
                    {
                        set.Add(neighbor);
                    }
                }
            }

            foreach (var mTile in set)
            {
                if (mTile.GetHeight() < minHeight)
                {
                    minHeight = mTile.GetHeight();
                }
            }

            foreach (var mTile in set)
            {
                mTile.SetHeight(minHeight);
                FTile.SetLandmarkFlagTrue(mTile.GetFlags());
            }

            foreach (var mTile in mTiles)
            {
                var controller = mTile.Controller;
                FTile.SetEnvironmentFlagTrue(mTile.GetFlags());
                mTile.SetAPCost(TileTable.Instance.Table[ETile.Water].Cost);
                mTile.SetStaminaCost(TileTable.Instance.Table[ETile.Water].StaminaCost);
                mTile.SetThreatMod(TileTable.Instance.Table[ETile.Water].ThreatMod);
                mTile.SetVulnMod(TileTable.Instance.Table[ETile.Water].VulnMod);
                mTile.SetLiquid(true);
                mTile.SetType(ETile.Water);
            }
        }
예제 #6
0
        public override void BuildLandmark(CTile tile)
        {
            var lmParams = LandmarkTable.Instance.Table[ELandmark.Flat_Hill];
            int radius   = RNG.Instance.Next(lmParams.RadiusMin, lmParams.RadiusMax);
            var mTiles   = tile.Model.GetAoETiles(radius - 1);

            foreach (var mTile in mTiles)
            {
                if (!FTile.HasFlag(mTile.Controller.GetFlags().CurFlags, FTile.Flags.Landmark))
                {
                    mTile.SetHeight(lmParams.Height);
                    var controller = mTile.Controller;
                    FTile.SetLandmarkFlagTrue(tile.GetFlags());
                }
            }
        }
예제 #7
0
        public void InitMapEnvironment(CMap controller, MapInitInfo info)
        {
            var decoLoader  = new DecoLoader();
            var biomeParams = BiomeTable.Instance.Table[info.Biome];

            foreach (var decoKVP in biomeParams.DecoDict)
            {
                foreach (var tile in controller.GetMap().GetTiles())
                {
                    var roll = RNG.Instance.NextDouble();
                    if (roll < decoKVP.Value && !FTile.HasFlag(tile.GetFlags().CurFlags, FTile.Flags.Environment))
                    {
                        decoLoader.AttachDeco(tile, decoKVP.Key);
                    }
                }
            }
        }
예제 #8
0
    protected void ParseTiles(List <int> _tiles)
    {
        int xPos = 0;
        int yPos = 0;

        foreach (int tile in _tiles)
        {
            FTile newTile = new FTile(tile);
            mTiles[xPos, yPos] = newTile;

            xPos++;

            if (xPos % mWidth == 0)
            {
                xPos = 0;
                yPos++;
            }
        }
    }
예제 #9
0
        public override void BuildLandmark(CTile tile)
        {
            var lmParams  = LandmarkTable.Instance.Table[ELandmark.Ridge];
            int length    = RNG.Instance.Next(lmParams.LengthMin, lmParams.LengthMin);
            var builder   = new HexGeography();
            var direction = EDirectionUtil.GetRandomDirection();
            var tiles     = builder.GetTiles(direction, length, tile.Model);

            foreach (MTile mTile in tiles)
            {
                if (mTile != null)
                {
                    if (!FTile.HasFlag(mTile.Controller.GetFlags().CurFlags, FTile.Flags.Landmark))
                    {
                        mTile.SetHeight(lmParams.Height);
                        var controller = mTile.Controller;
                        FTile.SetLandmarkFlagTrue(tile.GetFlags());
                    }
                }
            }
        }