public void dzien() { string ids; string idm; string idm2; string idt; string[] ruiny = new string[12]; int ileRuin = 0; int czas; int licznik; List <TableTownState> kasowane = new List <TableTownState>(); foreach (TableTownState stan in Modele.tableTownState) { ids = stan.GetIdState(); idm = stan.GetId(); czas = stan.GetDuration(); czas--; stan.SetDuration(czas); if (czas == 0) //koniec stanu { switch (ids) { case "ST01": //zaraza foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO11" && idm == idm2) //medykamenty { licznik = tow.GetRequisition(); licznik -= 500; tow.SetRequisition(licznik); } } break; case "ST02": //susza foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO02" && idm == idm2) //jabłka { licznik = tow.GetProduction(); licznik += 50; tow.SetProduction(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetProduction(); licznik += 50; tow.SetProduction(licznik); } } break; case "ST03": //nieurodzaj foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO02" && idm == idm2) //jabłka { licznik = tow.GetProduction(); licznik += 20; tow.SetProduction(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetProduction(); licznik += 20; tow.SetProduction(licznik); } } break; case "ST04": //obf. plony foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO02" && idm == idm2) //jabłka { licznik = tow.GetProduction(); licznik -= 20; tow.SetProduction(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetProduction(); licznik -= 20; tow.SetProduction(licznik); } } break; case "ST05": //w. obf. plony foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO02" && idm == idm2) //jabłka { licznik = tow.GetProduction(); licznik -= 50; tow.SetProduction(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetProduction(); licznik -= 50; tow.SetProduction(licznik); } } break; case "ST06": //pożar ruiny[ileRuin] = idm; ileRuin++; break; case "ST07": //odbudowa foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO01" && idm == idm2) //materiały budowlane { licznik = tow.GetRequisition(); licznik -= 50; tow.SetRequisition(licznik); } } break; case "ST08": //war prep foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO06" && idm == idm2) //bron { licznik = tow.GetRequisition(); licznik -= 100; tow.SetRequisition(licznik); } } break; case "ST09": //war foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO02" && idm == idm2) //jabłka { licznik = tow.GetRequisition(); licznik -= 200; tow.SetRequisition(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetRequisition(); licznik -= 200; tow.SetRequisition(licznik); } if (idt == "TO04" && idm == idm2) //mieso { licznik = tow.GetRequisition(); licznik -= 200; tow.SetRequisition(licznik); } if (idt == "TO01" && idm == idm2) //surowce { licznik = tow.GetRequisition(); licznik -= 25; tow.SetRequisition(licznik); } if (idt == "TO11" && idm == idm2) //medykamenty { licznik = tow.GetRequisition(); licznik -= 50; tow.SetRequisition(licznik); } } break; case "ST010": //oblężenie ruiny[ileRuin] = idm; ileRuin++; break; case "ST11": //gold age foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO01" && idm == idm2) //drewno { licznik = tow.GetRequisition(); licznik -= 10; tow.SetRequisition(licznik); } if (idt == "TO02" && idm == idm2) //jabłko { licznik = tow.GetRequisition(); licznik -= 20; tow.SetRequisition(licznik); } if (idt == "TO03" && idm == idm2) //tkanina { licznik = tow.GetProduction(); licznik -= 25; tow.SetProduction(licznik); } if (idt == "TO04" && idm == idm2) //mięso { licznik = tow.GetRequisition(); licznik -= 20; tow.SetRequisition(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetRequisition(); licznik -= 20; tow.SetRequisition(licznik); } if (idt == "TO06" && idm == idm2) //bron { licznik = tow.GetProduction(); licznik -= 25; tow.SetProduction(licznik); } if (idt == "TO07" && idm == idm2) //perla { licznik = tow.GetProduction(); licznik -= 45; tow.SetProduction(licznik); licznik = tow.GetRequisition(); licznik -= 20; tow.SetRequisition(licznik); } if (idt == "TO08" && idm == idm2) //przyprawy { licznik = tow.GetRequisition(); licznik -= 20; tow.SetRequisition(licznik); } if (idt == "TO09" && idm == idm2) //wino { licznik = tow.GetRequisition(); licznik -= 20; tow.SetRequisition(licznik); } if (idt == "TO11" && idm == idm2) //alchemia { licznik = tow.GetProduction(); licznik -= 40; tow.SetProduction(licznik); } } break; default: break; } TableTownState zakonczony = new TableTownState(idm, ids, 1); kasowane.Add(zakonczony); } else { //ewentualne działania podczas stanu switch (ids) { case "ST01": //zaraza foreach (TableTown miasto in Modele.tableTown) { if (miasto.GetId() == idm) { int pop = miasto.GetPopulation(); double populacja = pop; double ofiary = populacja * 0.05; int of = (int)ofiary; pop = pop - of; if (pop < 50) { pop = 50; } miasto.SetPopulation(pop); } } break; case "ST02": //susza break; case "ST03": //nieurodzaj break; case "ST04": //obf. plony break; case "ST05": //w. obf. plony break; case "ST06": //pożar foreach (TableArtInTown tow in Modele.tableArtInTown) { idm2 = tow.GetId(); if (idm == idm2) //dowolny towar w mieście (oberwą wszystkie po kolei) { licznik = tow.GetProduction(); licznik -= 5; tow.SetProduction(licznik); licznik = tow.GetNumber(); licznik -= 10; tow.SetNumber(licznik); } } break; case "ST07": //odbudowa foreach (TableArtInTown tow in Modele.tableArtInTown) { idm2 = tow.GetId(); if (idm == idm2) //dowolny towar w mieście (oberwą wszystkie po kolei) { licznik = tow.GetProduction(); licznik += 5; tow.SetProduction(licznik); } } break; case "ST08": //war prep foreach (TableTown miasto in Modele.tableTown) { if (miasto.GetId() == idm) { int gotowosc = miasto.GetMilitary(); gotowosc += 5; miasto.SetMilitary(gotowosc); } } break; case "ST09": //war break; case "ST010": //oblężenie foreach (TableArtInTown tow in Modele.tableArtInTown) { idm2 = tow.GetId(); if (idm == idm2) //dowolny towar w mieście (oberwą wszystkie po kolei) { licznik = tow.GetProduction(); licznik -= 5; tow.SetProduction(licznik); licznik = tow.GetNumber(); licznik -= 10; tow.SetNumber(licznik); } } break; default: break; } } } foreach (TableTownState stan in kasowane) { Modele.KoniecStanu(stan.GetIdState(), stan.GetId()); } //losowanie ewentualnych nowych stanów Boolean flaga; foreach (TableTown miasto in Modele.tableTown) { idm = miasto.GetId(); int dobro = miasto.GetProsperity(); if (dobro > 250) { flaga = Modele.NowyStan("ST11", idm, 5);//gold age if (flaga == false) { foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO01" && idm == idm2) //drewno { licznik = tow.GetRequisition(); licznik += 10; tow.SetRequisition(licznik); } if (idt == "TO02" && idm == idm2) //jabłko { licznik = tow.GetRequisition(); licznik += 20; tow.SetRequisition(licznik); } if (idt == "TO03" && idm == idm2) //tkanina { licznik = tow.GetProduction(); licznik += 25; tow.SetProduction(licznik); } if (idt == "TO04" && idm == idm2) //mięso { licznik = tow.GetRequisition(); licznik += 20; tow.SetRequisition(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetRequisition(); licznik += 20; tow.SetRequisition(licznik); } if (idt == "TO06" && idm == idm2) //bron { licznik = tow.GetProduction(); licznik += 25; tow.SetProduction(licznik); } if (idt == "TO07" && idm == idm2) //perla { licznik = tow.GetProduction(); licznik += 45; tow.SetProduction(licznik); licznik = tow.GetRequisition(); licznik += 20; tow.SetRequisition(licznik); } if (idt == "TO08" && idm == idm2) //przyprawy { licznik = tow.GetRequisition(); licznik += 20; tow.SetRequisition(licznik); } if (idt == "TO09" && idm == idm2) //wino { licznik = tow.GetRequisition(); licznik += 20; tow.SetRequisition(licznik); } if (idt == "TO11" && idm == idm2) //alchemia { licznik = tow.GetProduction(); licznik += 40; tow.SetProduction(licznik); } } } } int gotowosc = miasto.GetMilitary(); if (gotowosc < 50) { flaga = Modele.NowyStan("ST08", idm, 12);//warprep if (flaga == false) { foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO06" && idm == idm2) //bron { licznik = tow.GetRequisition(); licznik += 100; tow.SetRequisition(licznik); } } } } if (gotowosc > 300) { flaga = Modele.NowyStan("ST09", idm, 20);//war if (flaga == false) { foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO02" && idm == idm2) //jabłka { licznik = tow.GetRequisition(); licznik += 200; tow.SetRequisition(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetRequisition(); licznik += 200; tow.SetRequisition(licznik); } if (idt == "TO04" && idm == idm2) //mieso { licznik = tow.GetRequisition(); licznik += 200; tow.SetRequisition(licznik); } if (idt == "TO01" && idm == idm2) //surowce { licznik = tow.GetRequisition(); licznik += 25; tow.SetRequisition(licznik); } if (idt == "TO11" && idm == idm2) //medykamenty { licznik = tow.GetRequisition(); licznik += 50; tow.SetRequisition(licznik); } } } } } while (ileRuin > 0) { ileRuin--; idm = ruiny[ileRuin]; foreach (TableTown miasto in Modele.tableTown) { idm2 = miasto.GetId(); if (idm == idm2) { flaga = Modele.NowyStan("ST07", idm, 10); //odbudowa if (flaga == false) { foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO01" && idm == idm2) //materiały budowlane { licznik = tow.GetRequisition(); licznik += 50; tow.SetRequisition(licznik); } } } } } } foreach (TableTown miasto in Modele.tableTown) { idm = miasto.GetId(); Random rng = new Random(); int randomek = rng.Next(100); int czas2 = rng.Next(5, 16); switch (randomek) { case 1: flaga = Modele.NowyStan("ST01", idm, czas2); //zaraza if (flaga == false) { foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO11" && idm == idm2) //medykamenty { licznik = tow.GetRequisition(); licznik += 500; tow.SetRequisition(licznik); } } } break; case 2: flaga = Modele.NowyStan("ST02", idm, czas2); //susza if (flaga == false) { foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO02" && idm == idm2) //jabłka { licznik = tow.GetProduction(); licznik -= 50; tow.SetProduction(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetProduction(); licznik -= 50; tow.SetProduction(licznik); } } } break; case 3: flaga = Modele.NowyStan("ST03", idm, czas2); //nieurodzaj if (flaga == false) { foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO02" && idm == idm2) //jabłka { licznik = tow.GetProduction(); licznik -= 20; tow.SetProduction(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetProduction(); licznik -= 20; tow.SetProduction(licznik); } } } break; case 4: flaga = Modele.NowyStan("ST04", idm, czas2); //obfite plony if (flaga == false) { foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO02" && idm == idm2) //jabłka { licznik = tow.GetProduction(); licznik += 20; tow.SetProduction(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetProduction(); licznik += 20; tow.SetProduction(licznik); } } } break; case 5: flaga = Modele.NowyStan("ST05", idm, czas2); //b. obf. plony if (flaga == false) { foreach (TableArtInTown tow in Modele.tableArtInTown) { idt = tow.GetIdArticle(); idm2 = tow.GetId(); if (idt == "TO02" && idm == idm2) //jabłka { licznik = tow.GetProduction(); licznik += 50; tow.SetProduction(licznik); } if (idt == "TO05" && idm == idm2) //chleb { licznik = tow.GetProduction(); licznik += 50; tow.SetProduction(licznik); } } } break; case 6: czas2 /= 2; flaga = Modele.NowyStan("ST06", idm, czas2); //pożar break; default: break; } } }