Example #1
0
        private void ReloadPage(bool force = false)
        {
            _cpuedit = true;

            if (cbHouse.SelectedIndex == -1)
            {
                cbHouse.SelectedIndex = 0;
            }
            if (cbScenario.SelectedIndex == -1)
            {
                cbScenario.SelectedIndex = 0;
            }

            if (!force && _house == cbHouse.SelectedIndex && _scenario == cbScenario.SelectedIndex)
            {
                return;
            }

            _house    = cbHouse.SelectedIndex;
            _scenario = cbScenario.SelectedIndex;

            CampaignMissionData data = _uibWorkingCopy.Houses[_house].Missions[_scenario];

            cRegionPanel.Direction1        = (int)data.Unconfirmed_Direction1;
            cRegionPanel.Direction2        = (int)data.Unconfirmed_Direction2;
            cCommonPanel.RegionAnim_House1 = (int)data.RegionAnim_House1;
            cCommonPanel.RegionAnim_House2 = (int)data.RegionAnim_House2;
            cCommonPanel.RegionAnim_House3 = (int)data.RegionAnim_House3;
            cCommonPanel.EnemyHouse        = (int)data.ScoreEnemyHouse;

            cRegionPanel.MissionFile1 = data.MissionFile1;
            cRegionPanel.MissionFile2 = data.MissionFile2;
            cCommonPanel.SFX1         = data.SFX1;
            cCommonPanel.SFX2         = data.SFX2;
            cCommonPanel.SFX3         = data.SFX3;
            cCommonPanel.Theme        = data.Theme;

            cRegionPanel.RegionID1 = data.RegionID1;
            cRegionPanel.RegionID2 = data.RegionID2;

            byte[] atr = data.RegionsAwardedToAtreides;
            byte[] har = data.RegionsAwardedToHarkonnen;
            byte[] ord = data.RegionsAwardedToOrdos;
            cCommonPanel.RegionToAtreides1  = atr[0];
            cCommonPanel.RegionToAtreides2  = atr[1];
            cCommonPanel.RegionToAtreides3  = atr[2];
            cCommonPanel.RegionToHarkonnen1 = har[0];
            cCommonPanel.RegionToHarkonnen2 = har[1];
            cCommonPanel.RegionToHarkonnen3 = har[2];
            cCommonPanel.RegionToOrdos1     = ord[0];
            cCommonPanel.RegionToOrdos2     = ord[1];
            cCommonPanel.RegionToOrdos3     = ord[2];
            cCommonPanel.ScoreMultiplier    = data.ScoreMultiplier;

            cRegionPanel.Icon1X = data.Region1IconX;
            cRegionPanel.Icon1Y = data.Region1IconY;
            cRegionPanel.Icon2X = data.Region2IconX;
            cRegionPanel.Icon2Y = data.Region2IconY;

            // enable / disable region fields
            cRegionPanel.UpdateR1();
            cRegionPanel.UpdateR2();

            _cpuedit = false;
        }
Example #2
0
        private void Simulate(AnimStage stage = AnimStage.BEFORE_ANIM, bool icons = false)
        {
            try
            {
                // get regions
                RegionPolygonBinFile bin = new RegionPolygonBinFile();
                bin.ReadFromFile(@"assets\map\points.bin");
                Bitmap bmp = new Bitmap(pbPreview.Width, pbPreview.Height);

                House[] regionOwners = new House[bin.Polygons.Count];

                _uibWorkingCopy.GetRegionOwnership(ref regionOwners, (House)_house, _scenario, stage);

                // paint regions
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    g.DrawImage(new Bitmap(@"assets\map\dunemap2.png"), pbPreview.DisplayRectangle);

                    for (int r = 0; r < bin.Polygons.Count; r++)
                    {
                        RegionPolygonData data = bin.Polygons[r];
                        Point[]           pts  = new Point[data.Polygon.Length];
                        for (int i = 0; i < pts.Length; i++)
                        {
                            pts[i] = data.Polygon[i].ToPoint();
                        }

                        int owner = (int)regionOwners[r];
                        if (owner == owner.Clamp(0, 2))
                        {
                            using (Brush brush = new HatchBrush(HatchStyle.Percent50, Color.FromArgb(0xCF, _houseColors[owner]), Color.Transparent))
                            {
                                g.FillPolygon(brush, pts);
                            }
                        }

                        using (Pen pen = new Pen(Color.FromArgb(0x7F, Color.Black)))
                        {
                            g.DrawPolygon(pen, pts);
                        }

                        if (icons)
                        {
                            CampaignMissionData currData = _uibWorkingCopy.Houses[_house].Missions[_scenario];
                            Size sz = new Size(72, 70);
                            if (currData.RegionID1 == r + 1 || currData.RegionID2 == r + 1)
                            {
                                using (Pen pen = new Pen(Color.Blue, 2))
                                {
                                    g.DrawPolygon(pen, pts);
                                }
                            }

                            using (Pen pen = new Pen(Color.DarkBlue))
                            {
                                using (Brush brush = new SolidBrush(Color.DarkBlue))
                                {
                                    if (currData.RegionID1 > 0)
                                    {
                                        Point pt = currData.Region1IconPosition.ToPoint();
                                        g.DrawRectangle(pen, new Rectangle(pt, sz));
                                        g.DrawString(currData.MissionFile1, DefaultFont, brush, pt.X + 10, pt.Y + 10);
                                    }
                                    if (currData.RegionID2 > 0)
                                    {
                                        Point pt = currData.Region2IconPosition.ToPoint();
                                        g.DrawRectangle(pen, new Rectangle(pt, sz));
                                        g.DrawString(currData.MissionFile2, DefaultFont, brush, pt.X + 10, pt.Y + 10);
                                    }
                                }
                            }
                        }

                        using (Brush brush = new SolidBrush(Color.White))
                        {
                            g.DrawString("{0}, {1}".F(cbHouse.Text, cbScenario.Text), DefaultFont, brush, new Point(5, 5));
                        }
                    }
                }

                pbPreview.Image?.Dispose();
                pbPreview.Image = bmp;
            }
            catch { }
        }
Example #3
0
        public void GetRegionOwnership(ref House[] regionOwners, House playerHouse, int scenario, AnimStage stage)
        {
            for (int i = 0; i < regionOwners.Length; i++)
            {
                regionOwners[i] = (House)0xFF;
            }

            for (int scen = 0; scen < scenario; scen++)
            {
                CampaignMissionData data = Houses[(int)playerHouse].Missions[scen];

                House[] animOrder = new House[] {
                    data.RegionAnim_House1,
                    data.RegionAnim_House2,
                    data.RegionAnim_House3
                };

                for (int h = 0; h < animOrder.Length; h++)
                {
                    if (scen < scenario - 1 || (int)stage > h)
                    {
                        House ihouse = animOrder[h];
                        if (playerHouse == ihouse)
                        {
                            if (data.RegionID1 > 0 && data.RegionID1 <= regionOwners.Length)
                            {
                                regionOwners[data.RegionID1 - 1] = ihouse;
                            }
                            if (data.RegionID2 > 0 && data.RegionID2 <= regionOwners.Length)
                            {
                                regionOwners[data.RegionID2 - 1] = ihouse;
                            }
                        }
                        switch (ihouse)
                        {
                        case House.ATREIDES:
                            foreach (int r in data.RegionsAwardedToAtreides)
                            {
                                if (r > 0 && r <= regionOwners.Length)
                                {
                                    regionOwners[r - 1] = ihouse;
                                }
                            }
                            break;

                        case House.HARKONNEN:
                            foreach (int r in data.RegionsAwardedToHarkonnen)
                            {
                                if (r > 0 && r <= regionOwners.Length)
                                {
                                    regionOwners[r - 1] = ihouse;
                                }
                            }
                            break;

                        case House.ORDOS:
                            foreach (int r in data.RegionsAwardedToOrdos)
                            {
                                if (r > 0 && r <= regionOwners.Length)
                                {
                                    regionOwners[r - 1] = ihouse;
                                }
                            }
                            break;
                        }
                    }
                }
            }
        }