<?

	// czy gracz jest zalogowany?
		if($_SESSION['id_gracza']==NULL or $_SESSION['nazwa_gracza']==NULL or $_SESSION['pokoj_gracza']==NULL){header('Location: ./');exit();}



	// config gry - rozwiązanie tymczasowe (całość docelowo można przenieść do bazy i panelu CMS, stosuję to teraz ze względu na ograniczony czas)
	include"include/config_gry.php";


	// funkcje (przeliczanie miejsc, gotówki i majątku itp.)
	include"mod/inc/inc_gra_funkcje.php";



	// ustawienia gry do szablonu, z config.php
		$tpl->assign('ustawienia_gry',$ustawienia_gry);
	// odczytanie danych aktualnego pokoju gry
		$dane_pokoju = mysql_fetch_array(mysql_query("SELECT nazwa,liczba_graczy,stan,czy_rozgrywka_rozpoczeta FROM pokoje WHERE id='".$_SESSION['pokoj_gracza']."' LIMIT 1;"));
		$tpl->assign('dane_pokoju',$dane_pokoju);

	// odczytaj danych gracza
		$dane_gracza = mysql_fetch_array(mysql_query("SELECT * FROM gracze WHERE id='".$_SESSION['id_gracza']."' LIMIT 1;"));
		$tpl->assign('dane_gracza',$dane_gracza);

	// upewnij się czy gracz nie zbankrutował:
		if($dane_gracza['gotowka']<0 and $dane_gracza['czy_bankrut']==0){// czy gotowka<0
			// ustawiamy czy_bankrut=1 dla gracza
			$update = mysql_query("UPDATE gracze SET czy_bankrut='1',pozycja='0' WHERE id='".$_SESSION['id_gracza']."' LIMIT 1;");
			// kasujemy wszystkie pola tego gracza
			$delete = mysql_query("DELETE FROM pola WHERE id_gracza='".$_SESSION['id_gracza']."';");
			// ustaw ponownie pionki graczy (już bez tego co zbankrutował)
			ustaw_pionki();
			header('Location: gra.html');
		}

	// ### odświeżamy aktywność gracza, jest online
		$update = mysql_query("UPDATE gracze SET czas_aktywnosci='".time()."' WHERE id='".$_SESSION['id_gracza']."' LIMIT 1;");



	// ### załadowanie danych aktualnego pokoju

		// graczy
		$lista_graczy = array();
		$sql = mysql_query("SELECT SQL_CACHE * FROM gracze WHERE id_pokoju='".$_SESSION['pokoj_gracza']."' AND stan=1 AND pionek<>'' ORDER BY kolejnosc ASC  LIMIT ".$dane_pokoju['liczba_graczy'].";");
   	if($sql){
	      while($row=mysql_fetch_array($sql)){
				// czy online?
				$czy_online = 1;
				if(($row['czas_aktywnosci']+(60*5))<time()) $czy_online = 0;

				$lista_graczy[] = array('id' => $row['id'], 'nazwa' => $row['nazwa'], 'pionek' => $row['pionek'], 'pozycja' => $row['pozycja'], 'miejsce' => $row['miejsce'], 'gotowka'=>number_format($row['gotowka'], 2, ',', ' '), 'majatek'=>number_format($row['majatek'], 2, ',', ' '), 'razem'=>number_format($row['razem'], 2, ',', ' '), 'czy_bankrut'=>$row['czy_bankrut'], 'czy_online'=>$czy_online, 'czy_jego_kolej'=>$row['czy_jego_kolej']);
			}
			$tpl->assign('lista_graczy',$lista_graczy);
		}

		// pól gry
		$lista_pol = array();
		$sql = mysql_query ("SELECT SQL_CACHE * FROM pola WHERE id_pokoju='".$_SESSION['pokoj_gracza']."';");
   	if($sql){
	      while($row=mysql_fetch_array($sql)){

				// lista pionków na tym polu
					$lista_pionkow = array();
					$lista_pionkow_po_id = array();
					// rozbijamy po #
					// odczytujemy nazwy graczy oraz ich pionki
					$lista_pionkow_po_id = explode("#", $row['pionki']);
					$temp = array_pop($lista_pionkow_po_id); // usuwamy ostatni element tablicy
					for($x=0;$x<count($lista_pionkow_po_id);$x++){
						if($lista_pionkow_po_id[$x]){
							$row_gracz = mysql_fetch_array(mysql_query("SELECT SQL_CACHE nazwa,pionek FROM gracze WHERE id='".$lista_pionkow_po_id[$x]."' LIMIT 1;"));
							$lista_pionkow[] = array('pionek' => $row_gracz['pionek'], 'nazwa' => $row_gracz['nazwa']);
						}
					}

				// odczytanie danych właściciela tego pola
				$wlasciciel = array();
				if($row['id_gracza']!=0){
					if($row['czas_gracza']==-1)$row['czas_gracza'] = 0;
					$row_wlasciciela = mysql_fetch_array(mysql_query("SELECT SQL_CACHE nazwa,pionek,pozycja FROM gracze WHERE id='".$row['id_gracza']."' LIMIT 1;"));
					$wlasciciel = array('pionek' => $row_wlasciciela['pionek'], 'nazwa' => $row_wlasciciela['nazwa'], 'czas'=>$row['czas_gracza'], 'pozycja'=>$row_wlasciciela['pozycja'], 'zastawione'=>$row['zastawione']);
				}

				$lista_pol[$row['id_pola']] = array(
					'wlasciciel' => $wlasciciel,
					'dzialalnosc_1' => $row['dzialalnosc_1'],
					'towar_wyposazenie_1' => $row['towar_wyposazenie_1'],
					'szkolenie_1' => $row['szkolenie_1'],
					'dzialalnosc_2' => $row['dzialalnosc_2'],
					'towar_wyposazenie_2' => $row['towar_wyposazenie_2'],
					'szkolenie_2' => $row['szkolenie_2'],
					'dzialalnosc_3' => $row['dzialalnosc_3'],
					'towar_wyposazenie_3' => $row['towar_wyposazenie_3'],
					'szkolenie_3' => $row['szkolenie_3'],
					'ile_pionkow' => count($lista_pionkow_po_id),
					'pionki' => $lista_pionkow
				);

			}
			$tpl->assign('lista_pol',$lista_pol);
		}



	// ### czy stan pokoju == 0, jeśli tak to przekierowanie na gra,wynik-gry.html
	if($dane_pokoju['stan']==0){
		if($go2!="wynik-gry"){
			header('Location: gra,wynik-gry.html#0');
		}
		// jeśli jesteśmy na gra,wynik-gry.html
		if($go2=="wynik-gry"){
			// załadowanie danych potrzebnych do wyświetlania rankingu
			// posortowanie po miejscu, nazwa, pionków, oraz wyniku razem
			$lista_wynikow = array();
			$sql = mysql_query("SELECT SQL_CACHE * FROM gracze WHERE id_pokoju='".$_SESSION['pokoj_gracza']."' AND stan=1 AND pionek<>'' ORDER BY miejsce ASC LIMIT 8;");
	   	if($sql){
		      while($row=mysql_fetch_array($sql)){
					$lista_wynikow[] = array('id' => $row['id'], 'nazwa' => $row['nazwa'], 'pionek' => $row['pionek'], 'miejsce' => $row['miejsce'], 'pozycja' => $row['pozycja'], 'razem'=>number_format($row['razem'], 2, ',', ' '));
				}
				$tpl->assign('lista_wynikow',$lista_wynikow);
			}
		}
	}else{// jeśli stan==1 i jesteśmy na wynikach to przekierowanie do gry
		if($go2=="wynik-gry"){
			header('Location: gra.html');
		}
	}


	// ### jeśli gracz ma nadal ustawiony pokoj domyślny (czyli nowy gracz), to rpzekierowanie na: gra,wybierz-pokoj-gry.html
	if($_SESSION['pokoj_gracza']=="1001" and $go2!="wybierz-pokoj-gry"){
		header('Location: gra,wybierz-pokoj-gry.html#57');
	}
	if($_SESSION['pokoj_gracza']=="1001" and $go2=="wybierz-pokoj-gry"){
		// zapisanie wybranego pokoju
		if($_POST['akcja']=="zapisz_pokoj_gry"){
			// zmieniamy sesję
			$_SESSION['pokoj_gracza'] = $_POST['wybrany_pokoj_gry'];
			// zapisujemy w bazie
			$update = mysql_query("UPDATE gracze SET id_pokoju='".$_POST['wybrany_pokoj_gry']."',czas_aktualizacji='".time()."' WHERE id='".$_SESSION['id_gracza']."' LIMIT 1;");
		}
		// lista dostępnych pokoi (bez domyślnego)
		$lista_pokoi_gry = array();
		$sql = mysql_query("SELECT SQL_CACHE * FROM pokoje WHERE id<>'1001' AND stan=1 ORDER BY nazwa ASC;");
   	if($sql){
	      while($row=mysql_fetch_array($sql)){

				// ilu jest już graczy w tym pokoju?
				$ilu_graczy = mysql_result(mysql_query("SELECT COUNT(*) FROM gracze WHERE id_pokoju='".$row['id']."';"),0);

				if($row['liczba_graczy']>$ilu_graczy) $lista_pokoi_gry[] = array('id' => $row['id'], 'nazwa' => $row['nazwa']);
			}
			$tpl->assign('lista_pokoi_gry',$lista_pokoi_gry);
		}
	}



	// ### czy ma wybrany pionek?
	if($_SESSION['pokoj_gracza']!="1001" and $_SESSION['pionek_gracza']==NULL and $go2!="wybierz-swoj-pionek"){
		header('Location: gra,wybierz-swoj-pionek.html#57');
	}
	if($_SESSION['pokoj_gracza']!="1001" and $_SESSION['pionek_gracza']==NULL and $go2=="wybierz-swoj-pionek"){
		// zapisanie wybranego pionka dla gracza
		if($_POST['akcja']=="zapisz_pionek_gracza"){
			// aktualizujemy sesję
			$_SESSION['pionek_gracza'] = $_POST['wybrany_pionek'];
			// aktualizujemy wpis w bazie
			$update = mysql_query("UPDATE gracze SET pionek='".$_POST['wybrany_pionek']."',czas_aktualizacji='".time()."' WHERE id='".$_SESSION['id_gracza']."' LIMIT 1;");
			header('Location: gra.html#57');

		}
		// jakie pionki są dostępne?
			// czyli jakie pionki są już w tym pokoju gry?
			$pionki_w_pokoju = array();
			$sql = mysql_query("SELECT pionek FROM gracze WHERE id_pokoju='".$_SESSION['pokoj_gracza']."' LIMIT 8;");
			while($row = mysql_fetch_array($sql)){
				$pionki_w_pokoju[$row['pionek']] = 1;
			}
			$tpl->assign('pionki_w_pokoju',$pionki_w_pokoju);
	}



	// ### czy są wszyscy gracze?
	$ilu_graczy_w_pokoju = mysql_result(mysql_query("SELECT COUNT(*) FROM gracze WHERE id_pokoju='".$_SESSION['pokoj_gracza']."' AND pionek<>'' AND id_pokoju<>'1001';"),0);
	if($dane_pokoju['liczba_graczy']!=$ilu_graczy_w_pokoju and $go2!="czekaj-na-innych-graczy" and $_SESSION['pokoj_gracza']!="1001" and $_SESSION['pionek_gracza']!=""){
		header('Location: gra,czekaj-na-innych-graczy.html#57');
		// czekamy na innych graczy - odświeżanie ajaxem? sprawdzanie i jak liczba graczy = ilu graczy w pokoju, to odśwież.
	}



	// ### załadowanie danych do okienka informacji
	if($go2=="informacja" and $go3!=NULL){
		include"include/config_informacje.php";
	}



	// ### załadowanie danych do menu
	if($go2=="menu"){

		include"mod/inc/inc_gra_menu.php";
		// podsumujemy gotówkę i majątek graczy
		przelicz_gotowke_majatek_razem();
		// przeliczamy miejsce
		przelicz_miejsca_graczy();

	}



	// ### rozgrywka, albo czekamy na ustawienia, albo robimy ustawienie rozgrywki, albo gramy
	if($dane_pokoju['czy_rozgrywka_rozpoczeta']==1){ // trwa przygotowanie gry
		sleep(2); // poczekaj 2 sekundy i odśwież
		header('Location: gra.html');
	}
	if($dane_pokoju['czy_rozgrywka_rozpoczeta']==0 and $dane_pokoju['liczba_graczy']==$ilu_graczy_w_pokoju and $go2==NULL and $_SESSION['pokoj_gracza']!="1001" and $_SESSION['pionek_gracza']!=""){ // nie rozpoczęta gra
		// ustaw na 1
		$update = mysql_query("UPDATE pokoje SET czy_rozgrywka_rozpoczeta='1',czas_aktualizacji='".time()."' WHERE id='".$_SESSION['pokoj_gracza']."' LIMIT 1;");

		// w przypadku ponownego restartu gry (np. jak admin wyedytuje ilość graczy) to ustaw graczą "czy_jego_kolej=0"
		$update = mysql_query("UPDATE gracze SET czy_jego_kolej='0' WHERE id_pokoju='".$_SESSION['pokoj_gracza']."';");

	  	// rozlosowanie kolejności graczy
		$kolejnosc = 1;
		$losowani = mysql_query("SELECT id FROM gracze WHERE id_pokoju='".$_SESSION['pokoj_gracza']."' and stan=1 ORDER BY RAND() LIMIT 8;");
      while($losowany = mysql_fetch_array($losowani)){
			if($kolejnosc==1){
				// graczowi z kolejnosc==1, przypisujemy "czy_jego_kolej"=1
				$update = mysql_query("UPDATE gracze SET kolejnosc='".$kolejnosc."',czy_jego_kolej='1' WHERE id='".$losowany['id']."' LIMIT 1;");
			}else{
				// wyswietlamy losowo, przypisując $kolejnosc++;
				$update = mysql_query("UPDATE gracze SET kolejnosc='".$kolejnosc."' WHERE id='".$losowany['id']."' LIMIT 1;");
			}
      	$kolejnosc++;
      }

		przelicz_miejsca_graczy();

		ustaw_pionki();

		// ustaw na 2
		$update = mysql_query("UPDATE pokoje SET czy_rozgrywka_rozpoczeta='2',czas_aktualizacji='".time()."' WHERE id='".$_SESSION['pokoj_gracza']."' LIMIT 1;");

		header('Location: gra.html#0');
	}



	if($dane_pokoju['czy_rozgrywka_rozpoczeta']==2 and $dane_pokoju['stan']==1){ // ######### TO GRAMY ######### (jeśli pokój gry nadal aktywny)


		// czy moja kolej?
		// if czy_jego_kolej==1 ?
		if($dane_gracza['czy_jego_kolej']==1){

			// czy bankrut?
			// if czy_bankrut==1 ?
			if($dane_gracza['czy_bankrut']==0){



				// czy rzucałem kostką?
				if($dane_gracza['czy_rzucil_koscmi']==0){
					// to odpowiednie okienko
					if($go2=="rzuc-kostkami"){

						if($dane_gracza['czy_jego_kolej']==0)header('Location: gra.html#'.$dane_gracza['pozycja']);

						// proces rzucania
							// jak kliknie "rzuć kostkami"
							if($_POST['akcja']=="rzut_kostkami"){

								// to losujemy kostki (1-6) x 2 i sumujemy
								$kostka_1 = rand(1, 6);
								$kostka_2 = rand(1, 6);
								$kostka_razem = $kostka_1 + $kostka_2;

								// zapisujemy w bazie wynik rzutu i oznaczamy jako czy_rzucil_koscmi=1
								$update = mysql_query("UPDATE gracze SET kostka_1='".$kostka_1."', kostka_2='".$kostka_2."', kostka_razem='".$kostka_razem."', czy_rzucil_koscmi='1' WHERE id='".$_SESSION['id_gracza']."' LIMIT 1;");

								header('Location: gra,wykonaj-ruch.html#'.$dane_gracza['pozycja']);

							}




					}else{
						header('Location: gra,rzuc-kostkami.html#'.$dane_gracza['pozycja']);
					}



				}else{
					// jeśli rzucił

					// czy zrobił ruch
					if($dane_gracza['czy_zrobil_ruch']==0){
						// jeśli kliknie "wykonaj ruch"
						if($go2=="wykonaj-ruch"){
							if($_POST['akcja']=="wykonaj_ruch"){

								// zmien pozycję gracza
								$nowa_pozycja = $dane_gracza['pozycja'] + $dane_gracza['kostka_razem'];
								$czy_bonus_za_start = false;
								if($nowa_pozycja>57){ // czy przeszłem przez start?
									$nowa_pozycja = $nowa_pozycja - 58;
									$czy_bonus_za_start = true;
								}

								// aktualizujemy "czy_zrobil_ruch"=1
								$update = mysql_query("UPDATE gracze SET pozycja='".$nowa_pozycja."', czy_zrobil_ruch='1' WHERE id='".$_SESSION['id_gracza']."' LIMIT 1;");

								// odswiez połozenie pionków na planszy
								ustaw_pionki();

								// jeśli tak to bonus-za-start.html
								if($czy_bonus_za_start){
									header('Location: gra,bonus-za-start.html#'.$nowa_pozycja);
								}else{
									// jeśli nie to
									header('Location: gra.html#'.$nowa_pozycja);
								}

							}
						}else{
							header('Location: gra,wykonaj-ruch.html#'.$dane_gracza['pozycja']);
						}

					}else{

						// czy bonus za start?
						if($go2=="bonus-za-start" and ($dane_gracza['pozycja']-$dane_gracza['kostka_razem'])<=0 and $dane_gracza['czy_dostal_bonus_za_start']==0){
							$zarobek = $dane_gracza['gotowka'] + $ustawienia_gry['bonus_za_start'];
							// akualizujemy gotowke
							$update = mysql_query("UPDATE gracze SET gotowka='".$zarobek."', czy_dostal_bonus_za_start='1' WHERE id='".$_SESSION['id_gracza']."' LIMIT 1;");
							// podsumujemy gotówkę i majątek graczy
							przelicz_gotowke_majatek_razem();
							// przeliczamy miejsce
							przelicz_miejsca_graczy();
						}else{

							// jak zrobił ruch to na jakim polu stoi i przekierowanie na odpowiedni adres, robimy odpowiednie rzeczy



							// dane pola
							$dane_pola = mysql_fetch_array(mysql_query("SELECT * FROM pola WHERE id_pokoju='".$_SESSION['pokoj_gracza']."' and id_pola='".$dane_gracza['pozycja']."' LIMIT 1;"));



							// wykonujemy procesy w okienkach i po ich zakończeniu finalizujemy turę gracza
							$czy_dalej = false;



							// ### ### ładujemy odpowiednie okienka i akcje - główne działania gry
							if($rodzaj_pola[$dane_gracza['pozycja']]!="start"){include"mod/inc/inc_gra_pole_".$rodzaj_pola[$dane_gracza['pozycja']].".php";}else{$czy_dalej = true;}



							// tylko gdy procesy związane z polami są zakończone
							if($czy_dalej){

								// przeliczamy zarobek
								przelicz_gotowke_majatek_razem();

								// ustawiamy miejsca
								przelicz_miejsca_graczy();

								// czy zbankrutowałem?

									// jak tak to ustawiamy odpowiednie pole przy graczu
									// usuwamy wszystkie jego pola
									if($dane_gracza['gotowka']<0){// czy gotowka<0

										// ustawiamy czy_bankrut=1 dla gracza
										$update = mysql_query("UPDATE gracze SET czy_bankrut='1' WHERE id='".$_SESSION['id_gracza']."' LIMIT 1;");

										// kasujemy wszystkie pola tego gracza
										$delete = mysql_query("DELETE FROM pola WHERE id_gracza='".$_SESSION['id_gracza']."';");

										// ustaw ponownie pionki graczy (już bez tego co zbankrutował)
										ustaw_pionki();

									}



								// czy zakończył swoją turę?
									// jeśli tak to zerujemy kostki, czy rzucal itp.
									$update = mysql_query("UPDATE gracze SET czy_jego_kolej='0', czy_rzucil_koscmi='0', czy_zrobil_ruch='0', czy_dostal_bonus_za_start='0', kostka_1='0', kostka_2='0', kostka_razem='0' WHERE id='".$_SESSION['id_gracza']."' LIMIT 1;");
									// kończąć swoją turę odejmujemy z "pola" z kolumny "czas_gracza", tam gdzie "czas_gracza">0 i "id_gracza"==id_gracza
									$update = mysql_query("UPDATE pola SET czas_gracza=czas_gracza-1 WHERE id_pokoju='".$_SESSION['pokoj_gracza']."' and id_gracza='".$_SESSION['id_gracza']."' and czas_gracza>0 LIMIT 1;"); // odliczanie tury

									$update = mysql_query("UPDATE pola SET id_gracza='0' WHERE id_pokoju='".$_SESSION['pokoj_gracza']."' and id_gracza<>'0' and czas_gracza='0' LIMIT 1;");



								// czy jest następny gracz?
								$zapytanie = "SELECT id FROM gracze WHERE id_pokoju='".$_SESSION['pokoj_gracza']."' and kolejnosc>'".$dane_gracza['kolejnosc']."' and czy_bankrut='0' ORDER BY `gracze`.`kolejnosc` ASC LIMIT 1;";
								$id_nastepnego_gracza = @mysql_result(mysql_query($zapytanie),0);
								if($id_nastepnego_gracza){
									$update = mysql_query("UPDATE gracze SET czy_jego_kolej='1' WHERE id='".$id_nastepnego_gracza."' LIMIT 1;");
								}else{
									// jeśli nie następny, to pierwszy (ale inny niż obecny)
									$id_nastepnego_gracza = @mysql_result(mysql_query("SELECT id FROM gracze WHERE id_pokoju='".$_SESSION['pokoj_gracza']."' and czy_bankrut='0' and id<>'".$_SESSION['id_gracza']."' ORDER BY  `gracze`.`kolejnosc` ASC LIMIT 1;"),0);

									if($id_nastepnego_gracza){
										$update = mysql_query("UPDATE gracze SET czy_jego_kolej='1' WHERE id='".$id_nastepnego_gracza."' LIMIT 1;");
									}else{
										// nie ma już kolejnych graczy, to zakończ grę
										$update = mysql_query("UPDATE pokoje SET stan='0' WHERE id='".$_SESSION['pokoj_gracza']."' LIMIT 1;");
										header('Location: gra.html');
										exit();
									}
								}

								header('Location: gra.html#'.$dane_gracza['pozycja']);
								exit();

							}


						}



					}

				}

			}

		}else{ // jeśli nie moja kolej to jako $go2 możemy mieć tylko informacje, jak jest coś innego to przekierowanie na gra.html
			if($go2 and $go2!="informacja" and $go2!="wynik-gry" and $go2!="menu"){
				header('Location: gra.html#'.$dane_gracza['pozycja']);
				exit();
			}
		}
	}

?>