/// <summary> /// Pridanie cie�a /// </summary> /// <param name="paStanica">cie�</param> /// <returns>�i bolo mo�n� prida�</returns> public bool PridajCiel(MiestoZastavenia paStanica) { if (paStanica.MozePriat == aTyp.Druh) { paStanica.ZvysPobluhovane(); aCiele.Add(paStanica); return true; } Sprava.Info("Nekompatibiln� cie�!"); return false; }
/// <summary> /// Vэstavba doku /// </summary> /// <param name="paSmer">jeho smer</param> public void PostavDok(int paSmer) { Policko[,] matica = Hra.DajInstanciu().DajHernuPlochu().DajMaticu(); Dok dk = null; Spolocnost spol = Hra.DajInstanciu().Spolocnost; if (MozemStavat()) { switch (paSmer) { case (int)SmerDoku.dole: if (!matica[aPoloha.Riadok + 1, aPoloha.Stlpec].aPevnina && matica[aPoloha.Riadok + 1, aPoloha.Stlpec].aZastavane == null) { dk = new Dok(aPoloha, SmerDoku.dole); } break; case (int)SmerDoku.hore: if (!matica[aPoloha.Riadok - 1, aPoloha.Stlpec].aPevnina && matica[aPoloha.Riadok - 1, aPoloha.Stlpec].aZastavane == null) { dk = new Dok(aPoloha, SmerDoku.hore); } break; case (int)SmerDoku.vpravo: if (!matica[aPoloha.Riadok, aPoloha.Stlpec + 1].aPevnina && matica[aPoloha.Riadok, aPoloha.Stlpec + 1].aZastavane == null) { dk = new Dok(aPoloha, SmerDoku.vpravo); } break; case (int)SmerDoku.vlavo: if (!matica[aPoloha.Riadok, aPoloha.Stlpec - 1].aPevnina && matica[aPoloha.Riadok, aPoloha.Stlpec - 1].aZastavane == null) { dk = new Dok(aPoloha, SmerDoku.vlavo); } break; } if ( dk != null && spol.OverVydavok(-dk.Cena) && OverOkolieStaniceZoskupenia(dk, 1, 1)) { aZastavane = dk; spol.UpravFinancie(-dk.Cena); } else { Sprava.Info("Nie je moЮnб vэstavba doku!"); } } else { Sprava.Info("Nie je moЮnб vэstavba doku!"); } }
/// <summary> /// Vyhľadanie trasy pokocou dijkstru /// </summary> /// <param name="paPolohaDo"></param> /// <returns></returns> public override bool NajdiTrasu(Poloha paPolohaDo) { JeVCieli = false; aHranaNaTrase = 0; aPoziciaNaHrane = 0; aTrasa = DijkstrovAlg.NajdiTrasu(Poloha, paPolohaDo, Druh); if (aTrasa == null) { Strateny = true; Sprava.Info("Vlak sa stratil"); Kamera.DajInstanciu().VycentrujPohlad(Poloha); return(false); } return(true); }
/// <summary> /// Vymazanie cie�ov /// </summary> public void VymazCiele() { if (!aTyp.JeVCieli) { Sprava.Info("Nie je mo�n� vymaza� zoznam cielov, \r\n " + "dopravn� prostriedok mus� by� v depe!"); } else { foreach (var item in aCiele) { item.ZnizObsluhovane(); } aCiele.Clear(); aAktualnaPozicia = -1; aNakladam = false; } }
/// <summary> /// Pohnutie sa /// </summary> public void Start() { if (aCiele.Count >= 2) { Hra.DajInstanciu().DajHernuPlochu().PrejdiPolicka(); aTyp.Skryte = false; aJeVPohybe = true; NajdiTrasu(); aTyp.Strateny = false; Stanica stan = Hra.DajInstanciu().DajHernuPlochu().DajMaticu()[Poloha.Riadok, Poloha.Stlpec].Zastavane as Stanica; if (stan!= null) { stan.OdstranOdstavene(this); } } else { Sprava.Info("Dopravn� prostriedok nem� dostatok cielov!"); } }
/// <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"); } }
/// <summary> /// Spracovanie kliknutia na plochu /// </summary> /// <param name="paE"></param> private void SpracujKliknutie(MouseEventArgs paE) { VykonavanaCinnost tl = VykonavanaCinnost.bezna; foreach (Tlacitko toto in aTlacitkaMenu) { if (toto.Kliknute(paE.X, paE.Y)) { Console.WriteLine(toto.ToString()); tl = toto.DajTyp(); break; } } RestartCinnosti(); aBocneMenu.HlavnaCinnost = tl; switch (tl) { case VykonavanaCinnost.pauza: OknoAplikacie.DajInstanciu().Pauza(); Sprava.Info("Hra prerušená"); RestartCinnosti(); break; case VykonavanaCinnost.start: OknoAplikacie.DajInstanciu().Start(); Sprava.Info("Hra pokračuje"); RestartCinnosti(); break; case VykonavanaCinnost.vystavbaCiest: aBocneMenu.Obrazok = Resources.MenuCesty; aBocneMenu.HlavnaCinnost = tl; aBocneMenu.Nadpis = "Výstavba ciest"; break; case VykonavanaCinnost.vystavbaZeleznic: aBocneMenu.Obrazok = Resources.MenuZeleznice; aBocneMenu.HlavnaCinnost = tl; aBocneMenu.Nadpis = "Výstavba železníc"; break; case VykonavanaCinnost.upravaTerenu: aBocneMenu.Obrazok = Resources.MenuTerenu; aBocneMenu.HlavnaCinnost = tl; aBocneMenu.Nadpis = "Úprava terénu"; break; case VykonavanaCinnost.vystavbaLetisk: aBocneMenu.HlavnaCinnost = tl; aBocneMenu.Nadpis = "Výstavba letísk"; break; case VykonavanaCinnost.vystavbaVodnychCiest: aBocneMenu.Nadpis = "Výstavba vodných\nciest"; aBocneMenu.Obrazok = Resources.MenuVodnychStavieb; aBocneMenu.HlavnaCinnost = tl; break; case VykonavanaCinnost.zoznamMiest: SpravcaOkien.ZoznamVyroby(true); RestartCinnosti(); break; case VykonavanaCinnost.zoznamVyroby: SpravcaOkien.ZoznamVyroby(false); RestartCinnosti(); break; case VykonavanaCinnost.zoznamStanic: SpravcaOkien.ZoznamStanic(); RestartCinnosti(); break; case VykonavanaCinnost.zozmanLietadiel: SpravcaOkien.ZobrazZoznamDoprevProst(DruhVozidla.vzdusne); break; case VykonavanaCinnost.uloz: if (Sprava.DajNaVyber("Prajete si uložiť aktuálnu pozíciu v hre?\nUkladanie môže chvíľku trvať.")) { try { OknoAplikacie.DajInstanciu().Pauza(); Hra.DajInstanciu().Uloz(); OknoAplikacie.DajInstanciu().Start(); Sprava.Info("Hra bola úspešne uložená."); } catch (Exception) { Sprava.Info("Nie je možné uložiť hru!"); OknoAplikacie.DajInstanciu().Start(); } } break; case VykonavanaCinnost.nacitaj: if (Sprava.DajNaVyber("Prajete si načítať hru? Neuložený postup bude stratený!\nNačítanie môže chvíľku trvať.")) { try { OknoAplikacie.DajInstanciu().Pauza(); Hra.DajInstanciu().Nacitaj(); OknoAplikacie.DajInstanciu().Start(); Sprava.Info("Hra bola úspešne načítaná."); } catch (Exception) { Sprava.Info("Nie je možné načítať hru!"); } } break; case VykonavanaCinnost.zoznamVlakov: SpravcaOkien.ZobrazZoznamDoprevProst(DruhVozidla.kolajove); break; case VykonavanaCinnost.zoznamVozidiel: SpravcaOkien.ZobrazZoznamDoprevProst(DruhVozidla.cestne); break; case VykonavanaCinnost.zoznamLodi: SpravcaOkien.ZobrazZoznamDoprevProst(DruhVozidla.vodne); break; } }