コード例 #1
0
ファイル: GameMapLevel.cs プロジェクト: TrutzX/9Nations
        public TileMapConfig16 CreateNewLayer(string name, int order = 0)
        {
            TileMapConfig16 gml = Instantiate <TileMapConfig16>(prototypeMapLayer16, map.transform);

            gml.gameObject.name = name;
            gml.GetComponent <TilemapRenderer>().sortingOrder = order;
            //gml.level = levels.Count;
            return(gml);
        }
コード例 #2
0
ファイル: GameMapLevel.cs プロジェクト: TrutzX/9Nations
 public IEnumerator AddLayers()
 {
     for (int i = 0; i < dataLevel.LayerCount(); i++)
     {
         yield return(AddLayer(i));
     }
     improvement = CreateNewLayer32("Improvement", dataLevel.LayerCount());
     overlay     = CreateNewLayer("overlay", dataLevel.LayerCount() + 1);
     overlay.GetComponent <TilemapRenderer>().sortingLayerName = "Overlay";
     yield return(AddBorder());
 }
コード例 #3
0
ファイル: OwnerOverlay.cs プロジェクト: TrutzX/9Nations
        protected override void SetTile(TileMapConfig16 tile, NVector pos)
        {
            var b = S.Building().At(pos);

            if (b == null)
            {
                return;
            }

            //todo performance?
            tile.GetComponent <Tilemap>().SetTile(new Vector3Int(pos.x * 2 + 1, pos.y * 2, 0), Tile(b.Player()));
        }
コード例 #4
0
ファイル: ResOverlay.cs プロジェクト: TrutzX/9Nations
        protected override void SetTile(TileMapConfig16 tile, NVector pos)
        {
            if (S.ActPlayer().overlay.Get("res", pos) == 0)
            {
                return;
            }

            int align = 0;
            var rgk   = GameMgmt.Get().data.map.levels[pos.level].ResGenKey(pos.x, pos.y);

            if (rgk == null)
            {
                return;
            }

            foreach (string key in rgk)
            {
                int act = GameMgmt.Get().data.map.ResGen(pos, key);
                var res = L.b.res[key];

                //nothing to display?
                if (res.overlay.Count == 0 || act == 0)
                {
                    continue;
                }

                string found = null;
                //find id
                foreach (var o in res.overlay)
                {
                    var sp = SplitHelper.DelimiterInt(o);
                    if (sp.value > act)
                    {
                        break;
                    }

                    found = sp.key;
                }

                //show it
                Tile t = GameMgmt.Get().newMap.tools.GetTile(found);
                tile.GetComponent <Tilemap>().SetTile(new Vector3Int(pos.x * 2 + (align % 2), pos.y * 2 + (align / 2), 0), t);

                align++;

                //full?
                if (align >= 4)
                {
                    return;
                }
            }
        }
コード例 #5
0
ファイル: FrontierOverlay.cs プロジェクト: TrutzX/9Nations
        protected override void SetTile(TileMapConfig16 tile, NVector pos)
        {
            this._pos = pos;
            //how has it?
            Player player = S.Players().OverlayHighest(ID(), pos);

            if (player == null)
            {
                return;
            }

            tile.SetTile(this, new Vector3Int(pos.x, pos.y, 0), _frontier, false, player.Coat().color);
        }
コード例 #6
0
        public virtual void Run(Player player, TileMapConfig16 tile)
        {
            int level = S.Map().view.ActiveLevel;

            for (int x = 0; x < GameMgmt.Get().data.map.width; x++)
            {
                for (int y = 0; y < GameMgmt.Get().data.map.height; y++)
                {
                    NVector nv = new NVector(x, y, level);
                    if (player.fog.Visible(nv))
                    {
                        SetTile(tile, nv);
                    }
                }
            }
        }
コード例 #7
0
        private IEnumerator AddBorder()
        {
            yield return(GameMgmt.Get().load.ShowSubMessage($"Add border"));

            TileMapConfig16 t = CreateLayer16("Border", SortBorder).GetComponent <TileMapConfig16>();

            t.transform.position = new Vector3(0, 0, -1);

            for (int x = -1; x <= GameMgmt.Get().data.map.width; x++)
            {
                t.SetTile(x, -1, border);
                t.SetTile(x, GameMgmt.Get().data.map.height, border);
            }

            yield return(GameMgmt.Get().load.ShowSubMessage($"Add vertical border"));

            for (int y = 0; y < GameMgmt.Get().data.map.height; y++)
            {
                t.SetTile(-1, y, border);
                t.SetTile(GameMgmt.Get().data.map.width, y, border);
            }
        }
コード例 #8
0
ファイル: GameMapLevel.cs プロジェクト: TrutzX/9Nations
        public IEnumerator AddLayer(int layer)
        {
            TileMapConfig16 t   = CreateNewLayer($"{layer} {layers.Count}", layer);
            TileMapConfig16 w   = CreateNewLayer($"W{layer} {layers.Count}", layer).GetComponent <TileMapConfig16>();
            string          max = "/" + mapData.width + "/" + layers.Count;

            for (int x = 0; x < mapData.width; x++)
            {
                for (int y = 0; y < mapData.height; y++)
                {
                    Vector3Int v = new Vector3Int(x, y, layer);
                    int        d = dataLevel.At(v);
                    //skip?
                    if (d == -1)
                    {
                        continue;
                    }

                    try
                    {
                        t.SetTile(dataLevel, v, L.b.terrains[d], false, Color.white);
                        int q = dataLevel.At(v, true);
                        w.SetTile(dataLevel, v, L.b.terrains[q], true, Color.white);
                    }
                    catch (Exception e)
                    {
                        Debug.Log(d + " " + L.b.terrains.Values().Count(terr => terr.defaultTile == d));
                        Debug.Log($"{x}/{dataLevel.Width()}/{mapData.width},{y}/{dataLevel.Height()}/{mapData.height}");
                        Debug.LogException(new InvalidDataException($"Field type {d} does not exist", e));
                        break;
                    }
                }
                yield return(GameMgmt.Get().load.ShowSubMessage($"Loading {layer} {x}{max}"));
            }

            layers.Add(t);
            layersWinter.Add(w);
            w.gameObject.SetActive(false);
        }
コード例 #9
0
ファイル: GameMapLevel.cs プロジェクト: TrutzX/9Nations
        private IEnumerator AddBorder()
        {
            yield return(GameMgmt.Get().load.ShowSubMessage($"Add border"));

            TileBase bTile = GameMgmt.Get().newMap.prototypeBorder;

            border = CreateNewLayer("Border", dataLevel.LayerCount() + 5);
            border.transform.position = new Vector3(0, 0, -1);

            for (int x = -1; x <= GameMgmt.Get().data.map.width; x++)
            {
                border.SetTile(x, -1, bTile);
                border.SetTile(x, GameMgmt.Get().data.map.height, bTile);
            }

            yield return(GameMgmt.Get().load.ShowSubMessage($"Add vertical border"));

            for (int y = 0; y < GameMgmt.Get().data.map.height; y++)
            {
                border.SetTile(-1, y, bTile);
                border.SetTile(GameMgmt.Get().data.map.width, y, bTile);
            }
        }
コード例 #10
0
ファイル: FrontierOverlay.cs プロジェクト: TrutzX/9Nations
 public override void Run(Player player, TileMapConfig16 tile)
 {
     _frontier = L.b.terrains["frontier"];
     base.Run(player, tile);
 }
コード例 #11
0
 protected abstract void SetTile(TileMapConfig16 tile, NVector pos);