Пример #1
0
        /// <summary>
        /// Ak sa v okolн stanice nachбdza nejakб eЪte nezaradenб vэroba, tak sa zaradн
        /// </summary>
        /// <param name="paStavana">stavanб stanica</param>
        /// <param name="paRozmerRiadkov">rozmer</param>
        /// <param name="paRozmerStlpcov">rozmer</param>
        private void OverOkolieStaniceVyroba(Stanica paStavana, int paRozmerRiadkov, int paRozmerStlpcov)
        {

            int zacRiad = aPoloha.Riadok - 1;
            int zacStlp = aPoloha.Stlpec - 1;

            int konRiad = aPoloha.Riadok + paRozmerRiadkov;
            int konStlp = aPoloha.Stlpec + paRozmerStlpcov;

            Hra hra = Hra.DajInstanciu();
            Policko[,] matica = hra.DajHernuPlochu().DajMaticu();

            ZoskupenieStanic zosk = paStavana.Zoskupenie;

            for (int riadok = zacRiad; riadok <= konRiad; riadok++)
            {
                for (int stlpec = zacStlp; stlpec <= konStlp; stlpec++)
                {
                    Policko aktualne = matica[riadok, stlpec];
                    if (aktualne.Vyroba != null)
                    {
                        if (aktualne.Vyroba.Zoskupenie == null)
                        {
                            aktualne.Vyroba.Zoskupenie = zosk;
                            zosk.PridajVyrobu(aktualne.Vyroba);
                        }
                    }
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Overenie okolia zoskupenia, rozhoduje иi pridaЭ stanicu uЮ ku existujъcemu zoskupenium
        /// alebo иi vytvori novй. 
        /// </summary>
        /// <param name="paStavana">stavanб stanica</param>
        /// <param name="paRozmerRiadkov">rozmer</param>
        /// <param name="paRozmerStlpcov">rozmer</param>
        /// <returns>vэsledok</returns>
        private bool OverOkolieStaniceZoskupenia(Stanica paStavana, int paRozmerRiadkov, int paRozmerStlpcov) {
            
            int zacRiad = aPoloha.Riadok - 1;
            int zacStlp = aPoloha.Stlpec - 1;
            
            int konRiad = aPoloha.Riadok + paRozmerRiadkov;
            int konStlp = aPoloha.Stlpec + paRozmerStlpcov;

            Hra hra = Hra.DajInstanciu();
            Policko[,] matica = hra.DajHernuPlochu().DajMaticu();

            ZoskupenieStanic zosk = null;
            int pocetNajdenachZosk = 0;

            for (int riadok = zacRiad; riadok <= konRiad; riadok++)
            {
                for (int stlpec = zacStlp; stlpec <= konStlp; stlpec++)
                {
                    Policko aktualne = matica[riadok, stlpec];
                    if(aktualne.Zastavane is Stanica)
                    {
                        if (zosk == null || !zosk.Equals((aktualne.Zastavane as Stanica).Zoskupenie))
                        {
                            zosk = (aktualne.Zastavane as Stanica).Zoskupenie;
                            pocetNajdenachZosk++;
                        }
                    }
                }
            }

            if (pocetNajdenachZosk == 0)
            {
                zosk = new ZoskupenieStanic();
                paStavana.Zoskupenie = zosk;
                zosk.PridajStanicu(paStavana);
                hra.Spolocnost.PridajStanicu(zosk);
                OverOkolieStaniceVyroba(paStavana, paRozmerRiadkov, paRozmerStlpcov);
                return true;
            }
            else if (pocetNajdenachZosk == 1)
            {
                paStavana.Zoskupenie = zosk;
                zosk.PridajStanicu(paStavana);
                hra.Spolocnost.PridajStanicu(zosk);
                OverOkolieStaniceVyroba(paStavana, paRozmerRiadkov, paRozmerStlpcov);
                return true;
            }

            return false;
        }
Пример #3
0
        /// <summary>
        /// Vэstavba letiska
        /// </summary>
        public void PostavLetisko()
        {
            Hra hra = Hra.DajInstanciu();
            Policko[,] matica = hra.DajHernuPlochu().DajMaticu();
            bool mozemStavat = true;

            Letisko letisko = new Letisko(Poloha);

            for (int riadok = letisko.Poloha.Riadok; riadok < letisko.Poloha.Riadok + letisko.PocetRiadkov; riadok++)
            {
                for (int stlpec = letisko.Poloha.Stlpec; stlpec < letisko.Poloha.Stlpec + letisko.PocetStlpcov; stlpec++)
                {
                    if (riadok >= HernaPlocha.PocetRiadkov || stlpec >= HernaPlocha.PocetStlpcov || !matica[riadok, stlpec].MozemStavat())
                    {
                        mozemStavat = false;
                        break;
                    }
                }
            }

            Spolocnost spol = Hra.DajInstanciu().Spolocnost;
            if (mozemStavat && spol.OverVydavok(-letisko.Cena) && OverOkolieStaniceZoskupenia(letisko, letisko.PocetRiadkov, letisko.PocetStlpcov))
            {
                for (int riadok = letisko.Poloha.Riadok; riadok < letisko.Poloha.Riadok + letisko.PocetRiadkov; riadok++)
                {
                    for (int stlpec = letisko.Poloha.Stlpec; stlpec < letisko.Poloha.Stlpec + letisko.PocetStlpcov; stlpec++)
                    {
                        var hladanePolicko = matica[riadok, stlpec];
                        hladanePolicko.Zburaj(false);
                        hladanePolicko.Zastavane = letisko;
                    }
                }
                spol.UpravFinancie(-letisko.Cena);
            }
            else
            {
                Sprava.Info("Nie je moЮnй postaviЭ letisko");
            }
        }
Пример #4
0
        /// <summary>
        /// Rozhodovanie, čo je potrebné vykonať
        /// </summary>
        /// <param name="paE"></param>
        private void SpracujKliknutie(MouseEventArgs paE)
        {
            aMatica = aHra.DajHernuPlochu().DajMaticu();
            aStav   = false;

            for (int i = aKamera.OdsadenieY; i < aKamera.OdsadenieY + Kamera.cPocetOkienRiadky - PozadieMenu.cPosunZVrchu; i++)
            {
                for (int j = aKamera.OdsadenieX; j < aKamera.OdsadenieX + Kamera.cPocetOkienStplce - PozadieMenu.cPosunZBoku; j++)
                {
                    var aktPolicko = aMatica[i, j];
                    if (aStav != true && aktPolicko.BoloKliknute(paE.X, paE.Y))
                    {
                        aStav = true;
                        int upresnenieCinnosti    = aBocneMenu.DajZvolene();
                        VykonavanaCinnost cinnost = aBocneMenu.HlavnaCinnost;
                        switch (cinnost)
                        {
                        case VykonavanaCinnost.vystavbaCiest:
                            if (upresnenieCinnosti <= 11)
                            {
                                aktPolicko.PostavCestu(upresnenieCinnosti);
                            }
                            else if (upresnenieCinnosti <= 14)
                            {
                                aktPolicko.PostavZastavku(upresnenieCinnosti);
                            }


                            break;

                        case VykonavanaCinnost.vystavbaZeleznic:
                            if (upresnenieCinnosti <= 6)
                            {
                                aktPolicko.PostavZeleznicu(upresnenieCinnosti);
                            }
                            else if (upresnenieCinnosti <= 8)
                            {
                                aktPolicko.PostavStanicu(upresnenieCinnosti + 6);
                            }
                            break;

                        case VykonavanaCinnost.upravaTerenu:
                            if (upresnenieCinnosti == 1)
                            {
                                aktPolicko.Zburaj(true);
                            }
                            else if (upresnenieCinnosti == 2)
                            {
                                aktPolicko.Konvertuj();
                            }
                            break;

                        case VykonavanaCinnost.vystavbaLetisk:

                            aktPolicko.PostavLetisko();

                            break;

                        case VykonavanaCinnost.vystavbaVodnychCiest:

                            switch (upresnenieCinnosti)
                            {
                            case (int)SmerDoku.boja:
                                aktPolicko.PostavBoju();
                                break;

                            default:
                                aktPolicko.PostavDok(upresnenieCinnosti);
                                break;
                            }
                            break;

                        case VykonavanaCinnost.vyberCielov:
                            if (aktPolicko.Zastavane is MiestoZastavenia)
                            {
                                aHra.Spolocnost.UpravovanyDP.PridajCiel((MiestoZastavenia)aktPolicko.Zastavane);
                            }
                            else if (aktPolicko.Vyroba != null && aktPolicko.Vyroba.Dok != null)
                            {
                                aHra.Spolocnost.UpravovanyDP.PridajCiel(aktPolicko.Vyroba.Dok);
                            }
                            break;

                        case VykonavanaCinnost.bezna:
                            if (aktPolicko.Prostriedky())
                            {
                                aktPolicko.ZobrazFormProstriedkov();
                            }
                            if (aktPolicko.Vyroba != null)
                            {
                                aktPolicko.Vyroba.ZobrazForm();
                            }
                            else if (aktPolicko.Zastavane is Stanica)
                            {
                                (aktPolicko.Zastavane as Stanica).Zoskupenie.ZobrazForm();
                                (aktPolicko.Zastavane as Stanica).ZobrazForm();
                            }
                            break;
                        }
                    }
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Metóda vykonávaná pri každom prekreslení
        /// </summary>
        /// <param name="paE"></param>
        protected override void OnPaint(PaintEventArgs paE)
        {
            Graphics zariadenie = paE.Graphics;

            aMatica = aHra.DajHernuPlochu().DajMaticu();

            if (aKamera == null)
            {
                return;
            }

            for (int i = aKamera.OdsadenieY; i < aKamera.OdsadenieY + Kamera.cPocetOkienRiadky - PozadieMenu.cPosunZVrchu; i++)
            {
                for (int j = aKamera.OdsadenieX; j < aKamera.OdsadenieX + Kamera.cPocetOkienStplce - PozadieMenu.cPosunZBoku; j++)
                {
                    aMatica[i, j].DrawImage(zariadenie);
                }
            }

            List <DopravnyProstriedok> dopravnyProstriedok = aHra.Spolocnost.DopravneProstriedky;

            foreach (var item in dopravnyProstriedok)
            {
                item.DrawImage(zariadenie);
            }


            aPozMen.DrawImage(zariadenie);

            TextFormatFlags umiestnenie = TextFormatFlags.Left | TextFormatFlags.EndEllipsis;
            Font            pismo       = new System.Drawing.Font("Comic Sans MS", 12, FontStyle.Regular);

            TextRenderer.DrawText(zariadenie, "Herný deň: " + aHra.Den, pismo,
                                  new Rectangle(650, 10, 250, 20), SystemColors.ControlText, umiestnenie);
            TextRenderer.DrawText(zariadenie, "Financie spoločnosti: " + aHra.Spolocnost.Financie + "€", pismo,
                                  new Rectangle(900, 10, 300, 20), SystemColors.ControlText, umiestnenie);

            if (aBocneMenu != null)
            {
                aBocneMenu.DrawImage(zariadenie);
                TextRenderer.DrawText(zariadenie, aBocneMenu.Nadpis, pismo,
                                      new Rectangle(5, 50, 155, 300), SystemColors.ControlText, umiestnenie);
            }

            /*
             * Pen pero = new Pen(Color.Red, 5);
             * List<Vrchol> vrchol = aHra.DajHernuPlochu().ZoznamVrcholov;
             * List<Hrana> hrany = aHra.DajHernuPlochu().ZoznamHran;
             *
             * foreach (Vrchol item in vrchol)
             * {
             *  zariadenie.DrawEllipse(pero, (item.Policko.Poloha.Stlpec + 4 - aKamera.OdsadenieX) * Policko.cVelkostPolicka + 10,
             *      (item.Policko.Poloha.Riadok + 1 - aKamera.OdsadenieY) * Policko.cVelkostPolicka + 10, 20, 20);
             * }
             *
             * pero = new Pen(Color.Blue, 5);
             * int stlpecPrvy;
             * int riadokPrvy;
             * int stlpecDruhy;
             * int riadokDruhy;
             *
             *
             * foreach (Hrana item in hrany)
             * {
             *  if (item.Vrchol1 != null && item.Vrchol2 != null) {
             *      stlpecPrvy = item.Vrchol1.Policko.Poloha.Stlpec;
             *      riadokPrvy = item.Vrchol1.Policko.Poloha.Riadok;
             *
             *      stlpecDruhy = item.Vrchol2.Policko.Poloha.Stlpec;
             *      riadokDruhy = item.Vrchol2.Policko.Poloha.Riadok;
             *
             *      zariadenie.DrawLine(pero, new Point((stlpecPrvy + 4 - aKamera.OdsadenieX) * Policko.cVelkostPolicka + 19,
             *          (riadokPrvy + 1 - aKamera.OdsadenieY) * Policko.cVelkostPolicka + 19),
             *          new Point((stlpecDruhy + 4 - aKamera.OdsadenieX) * Policko.cVelkostPolicka + 19,
             *              (riadokDruhy + 1 - aKamera.OdsadenieY) * Policko.cVelkostPolicka + 19));
             *  }
             * }*/

            base.OnPaint(paE);
        }