public GameMapGenerator(List <T> players)
        {
            if (players.Count <= 1 || players.Count > 12)
            {
                throw new ArgumentException("Number of players should be between 2 and 12!");
            }

            _players = players;

            _entityFactory = new EntityFactory();

            if (_players.Count == 4)
            {
                _powerUpGenerator = new DistanceBasedPowerUpGenerator(_entityFactory);
            }
            else
            {
                _powerUpGenerator = new RandomPowerUpGenerator(_entityFactory);
            }

            if (_players.Count <= 4)
            {
                MapSize = MapSizes.Small;
            }
            else if (_players.Count <= 8)
            {
                MapSize = MapSizes.Meduim;
            }
            else
            {
                MapSize = MapSizes.Large;
            }
        }
Example #2
0
 private void mapToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (sender is ToolStripMenuItem)
     {
         Maps map = (Maps)Enum.Parse(typeof(Maps), (string)(sender as ToolStripMenuItem).Tag);
         SetLocation(map, MapSizes.GetSize(map).Width / 2, MapSizes.GetSize(map).Height / 2);
     }
 }
        public GameMap GenerateGameMap(MapSizes mapSize)
        {
            var mapSizeNumber = GetMapSize(mapSize);
            var playerOneName = _players[0].Name;
            var playerTwoName = _players[1].Name;
            var gameMap       = new GameMap(playerOneName, playerTwoName, mapSizeNumber, mapSizeNumber);

            GeneratePlayers(gameMap);
            return(gameMap);
        }
Example #4
0
        private void Img_MouseDown(object sender, MouseEventArgs e)
        {
            var mapSize = MapSizes.GetSize((int)m_Map);

            var x = e.X * mapSize.Width / Img.Width;
            var y = e.Y * mapSize.Height / Img.Height;

            Pandora.Map.Map    = m_Map;
            Pandora.Map.Center = new Point(x, y);
        }
Example #5
0
        private void Img_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            Size mapSize = MapSizes.GetSize((int)m_Map);

            int x = e.X * mapSize.Width / Img.Width;
            int y = e.Y * mapSize.Height / Img.Height;

            Pandora.Map.Map    = m_Map;
            Pandora.Map.Center = new Point(x, y);
        }
Example #6
0
 // Start is called before the first frame update
 void Start()
 {
     if (setMapSizeScript)
     {
         mapSize = setMapSizeScript.SetMapSize(mapSize);
     }
     //Debug.Log("Starting Generate Map, Time in sec: " + Time.realtimeSinceStartup);
     GenerateMap();
     //Debug.Log("finished Generate Map, Time  in sec: " + Time.realtimeSinceStartup);
 }
Example #7
0
        public void PrepareGame(List <Player> players, MapSizes mapSize)
        {
            _gameMap      = new GameMapGenerator(players).GenerateGameMap(mapSize);
            _gameComplete = false;

            _players = players;

            foreach (var player in _players)
            {
                player.CommandListener += player_CommandListener;
            }

            Logger.LogInfo("\tOK!");
        }
        private int GetMapSize(MapSizes mapSize)
        {
            switch (mapSize)
            {
            case MapSizes.Small:
                return(Settings.Default.SmallMapSize);

            case MapSizes.Medium:
                return(Settings.Default.MediumMapSize);

            default:
                return(Settings.Default.LargeMapSize);
            }
        }
Example #9
0
        private void locationsTreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            object tag = locationsTreeView.SelectedNode.Tag;

            if (tag == null)
            {
                nameTextBox.Enabled    = false;
                colorButton.Enabled    = false;
                mapComboBox.Enabled    = false;
                xNumericUpDown.Enabled = false;
                yNumericUpDown.Enabled = false;
                zNumericUpDown.Enabled = false;

                return;
            }
            else if (tag is ParentNode)
            {
                ParentNode node = tag as ParentNode;
                colorButton.Enabled   = true;
                colorButton.BackColor = node.Color;
                nameTextBox.Text      = node.Name;

                mapComboBox.Enabled       = false;
                mapComboBox.SelectedIndex = -1;
                xNumericUpDown.Enabled    = false;
                yNumericUpDown.Enabled    = false;
                zNumericUpDown.Enabled    = false;
            }
            else if (tag is ChildNode)
            {
                ChildNode node = tag as ChildNode;

                xNumericUpDown.Maximum = MapSizes.GetSize((int)node.Map).Width;
                yNumericUpDown.Maximum = MapSizes.GetSize((int)node.Map).Height;
                colorButton.Enabled    = true;
                colorButton.BackColor  = node.Color;
                nameTextBox.Text       = node.Name;

                mapComboBox.Enabled       = true;
                mapComboBox.SelectedIndex = (int)node.Map;
                xNumericUpDown.Enabled    = true;
                xNumericUpDown.Value      = node.X;
                yNumericUpDown.Enabled    = true;
                yNumericUpDown.Value      = node.Y;
                zNumericUpDown.Enabled    = true;
                zNumericUpDown.Value      = node.Z;
            }
        }
Example #10
0
        private void AddSpawns(Bitmap bmp)
        {
            var xscale = bmp.Width / (double)MapSizes.GetSize((int)m_Map).Width;
            var yscale = bmp.Height / (double)MapSizes.GetSize((int)m_Map).Height;

            var color = Pandora.Profile.Travel.SpawnColor;

            foreach (SpawnEntry spawn in SpawnData.SpawnProvider.Spawns)
            {
                if (spawn.Map == (int)m_Map)
                {
                    var x = (int)(spawn.X * xscale);
                    var y = (int)(spawn.Y * yscale);

                    if (x >= 0 && y >= 0 && x < bmp.Width && y < bmp.Height)
                    {
                        bmp.SetPixel(x, y, color);
                    }
                }
            }
        }
        public GeneralTabViewModel(List <DowMap> addonMaps)
        {
            addonMaps.Sort(MapSort);

            AddonMaps = new ToggleItemListViewModel <DowMap>("Addon Maps");
            AddonMaps.SetItems(addonMaps.Select(map => new ToggleItemViewModel <DowMap>(true)
            {
                Label = $"{map.Name} [{map.Size}]", Item = map
            }));

            Maps  = new ToggleItemListViewModel <DowMap>("Maps");
            Rules = new ToggleItemListViewModel <GameRule>("Win Conditions");

            RefreshForMod = ReactiveCommand.CreateFromTask(async(int id) =>
            {
                var(maps, rules) = await Observable.Start(() =>
                {
                    using var store = new ModsDataStore();
                    return(store.GetMaps(id).ToList(), store.GetRules(id).ToList());
                }, RxApp.TaskpoolScheduler);

                maps.Sort(MapSort);

                Maps.SetItems(maps.Select(map => new ToggleItemViewModel <DowMap>(true)
                {
                    Label = $"{map.Name} [{map.Size}]", Item = map
                }));
                Rules.SetItems(rules.Where(rule => rule.IsWinCondition)
                               .Select(rule => new ToggleItemViewModel <GameRule>(true)
                {
                    Label = rule.Name, Item = rule
                }));
            });

            var sizeToToggle   = new Dictionary <int, ToggleItemViewModel <int> >();
            var playerToToggle = new Dictionary <int, ToggleItemViewModel <int> >();

            ToggleMapPlayerFilter = ReactiveCommand.Create((ToggleItemViewModel <int> player) =>
            {
                foreach (var map in Maps.Items.Concat(AddonMaps.Items))
                {
                    if (map.Item.Players == player.Item &&
                        sizeToToggle.GetValueOrDefault(map.Item.Size) is ToggleItemViewModel <int> size &&
                        size.IsToggled)
                    {
                        map.IsEnabled = player.IsToggled;
                    }
                }
            });

            ToggleMapSizeFilter = ReactiveCommand.Create((ToggleItemViewModel <int> size) =>
            {
                foreach (var map in Maps.Items.Concat(AddonMaps.Items))
                {
                    if (map.Item.Size == size.Item &&
                        playerToToggle.GetValueOrDefault(map.Item.Players) is ToggleItemViewModel <int> players &&
                        players.IsToggled)
                    {
                        map.IsEnabled = size.IsToggled;
                    }
                }
            });

            foreach (var players in Enumerable.Range(2, 7))
            {
                var item = new ToggleItemViewModel <int>(true)
                {
                    Label = $"{players}p", Item = players
                };
                MapTypes.Add(item);
                playerToToggle.Add(players, item);
                item.WhenAnyValue(x => x.IsToggled)
                .DistinctUntilChanged()
                .Select(x => item)
                .InvokeCommand(ToggleMapPlayerFilter);
            }

            foreach (int size in Enum.GetValues(typeof(MapSize)))
            {
                var item = new ToggleItemViewModel <int>(true)
                {
                    Label = size.ToString(), Item = size
                };
                MapSizes.Add(item);
                sizeToToggle.Add(size, item);
                item.WhenAnyValue(x => x.IsToggled)
                .DistinctUntilChanged()
                .Select(x => item)
                .InvokeCommand(ToggleMapSizeFilter);
            }

            this.WhenAnyValue(x => x.Mod)
            .Where(mod => mod != null)
            .Select(mod => mod.Id)
            .DistinctUntilChanged()
            .InvokeCommand(RefreshForMod);
        }
Example #12
0
        /// <summary>
        ///     Paint the image and the clients
        /// </summary>
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            if (m_Image == null)
            {
                return;
            }

            var xBlocks = MapSizes.GetSize(m_Map).Width / 32;
            var yBlocks = MapSizes.GetSize(m_Map).Height / 32;

            m_Grid = new bool[xBlocks, yBlocks];
            m_Table.Clear();

            foreach (var client in m_Clients)
            {
                if (client.Map == m_Map)
                {
                    var x = client.X / 32;
                    var y = client.Y / 32;

                    m_Grid[x, y] = true;

                    // Issue 10 - Update the code to Net Framework 3.5 - http://code.google.com/p/pandorasbox3/issues/detail?id=10 - Smjert
                    List <ClientEntry> current;
                    m_Table.TryGetValue(new Point(x, y), out current);
                    // Issue 10 - End

                    if (current != null)
                    {
                        current.Add(client);
                    }
                    else
                    {
                        // Issue 10 - Update the code to Net Framework 3.5 - http://code.google.com/p/pandorasbox3/issues/detail?id=10 - Smjert
                        current = new List <ClientEntry>();
                        current.Add(client);
                        // Issue 10 - End

                        m_Table[new Point(x, y)] = current;
                    }
                }
            }

            // Draw the image
            e.Graphics.DrawImage(m_Image, 8, 40, m_Image.Width, m_Image.Height);

            // Draw the backgrounds
            for (var x = 0; x < xBlocks; x++)
            {
                for (var y = 0; y < yBlocks; y++)
                {
                    if (m_Grid[x, y])
                    {
                        // Issue 10 - Update the code to Net Framework 3.5 - http://code.google.com/p/pandorasbox3/issues/detail?id=10 - Smjert
                        Point p;
                        if (m_Table.ContainsKey(p = new Point(x, y)))
                        {
                            var   count         = m_Table[p].Count;
                            Brush backGridBrush = new SolidBrush(Color.Yellow);

                            // Draw this background
                            e.Graphics.FillRectangle(backGridBrush, 8 + x * 4, 40 + y * 4, 4, 4);

                            backGridBrush.Dispose();
                        }
                        // Issue 10 - End
                    }
                }
            }
        }