pristav:-
 maximum(M,X,Stena),
 styl(St),
 sestava(Sez),
 spr(M,X,Stena,St,Sez).

pristav(Sez):-
 maximum(M,X,Stena),
 styl(St),
 spr(M,X,Stena,St,Sez).
 
displ(S):- 
 displ(ook,S).

displ(ook,Sez):-
 ook(pom,J,D,S,V,P,Sour,Stena),
 retract(ook(pom,J,D,S,V,P,Sour,Stena)),
 displ(ook,Sez).
 
displ(ook,[[J,Sour,D,S,V,Stena]|Sez]):-
 ook(T,J,D,S,V,P,Sour,Stena),
 retract(ook(T,J,D,S,V,P,Sour,Stena)),
 displ(ook,Sez).

displ(ses,[[J,Sour]|Sez]):-
 ses(T,J,D,S,V,P,Sour),
 retract(ses(T,J,D,S,V,P,Sour)),
 displ(ses,Sez).

displ(free,[[J]|Sez]):-
 free(T,J,D,S,V,P),
 retract(free(T,J,D,S,V,P)),
 displ(free,Sez).

displ(_,[]). 

spr(M,P,n,r,Sez):-
 Ox is M+P,
 all(n,Sez,Ox,0,no,no,no).

spr(_,P,n,l,Sez):-
 all(n,Sez,P,0,no,no,no).  

spr(_,P,s,r,Sez):-
 mistnost(_,Y,_),
 all(s,Sez,P,Y,no,yes,yes).  

spr(M,P,s,l,Sez):-
 mistnost(_,Y,_),
 Ox is M+P,
 all(s,Sez,Ox,Y,no,yes,yes).  

spr(_,_,w,l,Sez):-
 mistnost(_,Y,_),
 all(w,Sez,Y,0,yes,no,yes).  

spr(_,P,w,r,Sez):-
 all(w,Sez,P,0,yes,no,yes).  

spr(M,_,e,r,Sez):-
 mistnost(_,Y,_),
 Ox is M,
 all(e,Sez,Ox,Y,yes,yes,no).  


spr(_,P,e,l,Sez):-
 mistnost(_,Y,_),
 all(e,Sez,P,Y,yes,yes,no).  

all(Stena,[[[X,Y,Z],J]|Sez],Ox,Oy,Otoc,OdY,Abs):-
 ses(Typ,J,D,S,V,Par,[X,Y,Z]),
 (member(vert,Par),	%je to tam vertikalne ... zmenit Stenu
  vert(Stena,Par,NStena),PD is S,PS is D;
  NStena=Stena,PD is D, PS is S),
 retract(ses(Typ,J,D,S,V,Par,[X,Y,Z])),
 (Abs==yes,NX is -X+Ox-PD; NX is X+Ox),
 (OdY==no,NY is Y+Oy;NY is Y+Oy-PS),
 (Otoc==yes, asserta(ook(Typ,J,D,S,V,Par,[NY,NX,Z],NStena));
  asserta(ook(Typ,J,D,S,V,Par,[NX,NY,Z],NStena))),
 all(Stena,Sez,Ox,Oy,Otoc,OdY,Abs).

all(_,[],_,_,_,_,_).

vert(n,Par,w):- member(styl_r,Par).
vert(n,Par,e):- member(styl_l,Par).
vert(s,Par,w):- member(styl_l,Par).
vert(s,Par,e):- member(styl_r,Par).
vert(w,Par,n):- member(styl_l,Par).
vert(w,Par,s):- member(styl_r,Par).
vert(e,Par,n):- member(styl_r,Par).
sert(e,Par,s):- member(styl_l,Par).

vert(n,w). %ale neni to poradne, to by bylo moc "slozity" 
vert(s,e). %i kdyz vim jak nato, je to v podstate zbytecny
vert(e,s).
vert(w,n).
head(X,[X|_]).

%mistnost(420,350,250).
% prodebug, ucely pridat ses_r  nebo ses_l
