예제 #1
0
        public static GameMap FromSimpleMap(StrategyGame game, SimpleGameMap map, bool preview = false)
        {
            var m = new GameMap(game)
            {
                Name    = map.Name,
                Sectors = map.Sectors.Select(_ => new MapSector(game, _.Id, GameMaps.SectorNames.NextString, _.MapPosition)
                {
                    StartingSector = _.StartingSectorTeam
                }).ToList()
            };

            m.Wormholes = map.WormholeIds.Select(_ => new Wormhole(game, m.Sectors[_.FromSectorId], m.Sectors[_.ToSectorId])).ToList();

            if (preview)
            {
                foreach (var s in m.Sectors)
                {
                    s.SetVisibleToTeam(0, true);
                    if (s.StartingSector > 0)
                    {
                        s.Colour1 = new SolidBrush(Color.FromArgb(GameSettings.DefaultTeamColours[s.StartingSector - 1]));
                    }
                }

                foreach (var w in m.Wormholes)
                {
                    w.SetVisibleToTeam(1, true);
                }
            }

            m.InitialiseMap();
            return(m);
        }
예제 #2
0
        public SimpleGameMap ToSimpleMap()
        {
            var m = new SimpleGameMap(Name);

            foreach (var s in Sectors)
            {
                m.Sectors.Add(new SimpleMapSector(s.Id, s.MapPosition)
                {
                    StartingSectorTeam = s.StartingSector
                });
            }

            foreach (var w in Wormholes)
            {
                var s1 = w.Sector1.Id;
                var s2 = w.Sector2.Id;

                if (!m.WormholeIds.Any(_ => (_.FromSectorId == s1 || _.ToSectorId == s1) && (_.FromSectorId == s2 || _.ToSectorId == s2)))
                {
                    m.WormholeIds.Add(new WormholeId(s1, s2));
                }
            }
            return(m);
        }