From 4b443ce7fe6ff59a44578030e5f34a625b1a1b0f Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Mon, 12 Dec 2016 01:26:41 +0100
Subject: [PATCH] started scoring

---
 bin/de/deadlocker8/roadgame/logic/Board.class | Bin 5552 -> 6028 bytes
 .../roadgame/logic/CenterType.class           | Bin 1237 -> 1289 bytes
 .../deadlocker8/roadgame/logic/EdgeType.class | Bin 1116 -> 1169 bytes
 .../roadgame/logic/ScorePosition.class        | Bin 0 -> 1246 bytes
 bin/de/deadlocker8/roadgame/logic/Tile.class  | Bin 3562 -> 3165 bytes
 .../deadlocker8/roadgame/logic/TileType.class | Bin 5297 -> 5341 bytes
 .../roadgame/tilepacks/TilePackOneTile.class  | Bin 0 -> 769 bytes
 .../roadgame/tilepacks/TilePackTest2.class    | Bin 843 -> 808 bytes
 .../deadlocker8/roadgame/ui/Controller.class  | Bin 16810 -> 16931 bytes
 bin/de/deadlocker8/roadgame/ui/Scoring.class  | Bin 0 -> 6984 bytes
 src/de/deadlocker8/roadgame/logic/Board.java  | 198 ++++++-----
 .../roadgame/logic/CenterType.java            |   2 +-
 .../deadlocker8/roadgame/logic/EdgeType.java  |   2 +-
 .../roadgame/logic/ScorePosition.java         |   6 +
 .../deadlocker8/roadgame/logic/Textures.java  |   2 +-
 src/de/deadlocker8/roadgame/logic/Tile.java   |  32 +-
 .../deadlocker8/roadgame/logic/TileType.java  |  36 +-
 .../roadgame/tilepacks/TilePackOneTile.java   |  16 +
 .../roadgame/tilepacks/TilePackTest2.java     |   3 +-
 .../deadlocker8/roadgame/ui/Controller.java   |   2 +
 src/de/deadlocker8/roadgame/ui/Scoring.java   | 328 ++++++++++++++++++
 21 files changed, 507 insertions(+), 120 deletions(-)
 create mode 100644 bin/de/deadlocker8/roadgame/logic/ScorePosition.class
 create mode 100644 bin/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.class
 create mode 100644 bin/de/deadlocker8/roadgame/ui/Scoring.class
 create mode 100644 src/de/deadlocker8/roadgame/logic/ScorePosition.java
 create mode 100644 src/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.java
 create mode 100644 src/de/deadlocker8/roadgame/ui/Scoring.java

diff --git a/bin/de/deadlocker8/roadgame/logic/Board.class b/bin/de/deadlocker8/roadgame/logic/Board.class
index d98dedf6e198e2131c10ee4bbacd6e4483d7784a..d769c1b96a21bf4de46407cb93bfce16230e4b4f 100644
GIT binary patch
delta 1529
zcmdm>-J>sX>ff$?3=9k=45!!`m>3z9Co3|`ZPd$P7h+^6;bCxOaN=T6W+>xfC}*gc
zJdfRko0Fl6p@yBInvp>bq*Tl`B|SByvLKa*p_ZYJk%7(GF*wA>b+Rn8(&Uru+-X$|
z4Ll5u3?_^WY^jB%i8;j}{mncKEg;2Q5XJGXel8$e+ISe+87deVSkhBVf<XeEJPchh
z0auVf4-Z2xOdy<*fg>-qq9i0UCv~zP$0mWvJPfG}X<Q7#3{!a+rZG&PEWlZ5JBNp%
zpJ4(>a2^lCe1-*#3@pW&RjG^&%o>`WAR`y?Ff3*eU}WGf$}dSQNe#+O&nN+jFXdra
zHu)H*AImC626d26g<UdpQ}c>5^YgeERx+&NVc=$1JK2+~j&b|s6I?RVI~f^xo$?cl
zQWT;~GILUkZMhh>G3*AZ+B5k-mlVe~hJ8E?`xy>QR^+zkKg7tu7z<Kx1SEEJayGXS
z$2NxJJPcbHwr*a^ZOmHF)WyKUz{<eDSfwQ+%aXE<A!8;(7?fFT#iG59p>z{N<u-=;
zSquUYPSZAq`k4%hk}TU8S~oF(c(WK(pgf2|G3GTOrC>3zPFChMS~4sNvM|%ZOt9(o
z3?0bEcR&n;8s81!L5=T*DTEl`0W!WDVZ1C$0?c?Y6Kp)lg%CG^91nFa)bvu2>GdFw
zfn5*xCdBwwknyDm<5^M=t_Lw8#>3qNG9Kz&sPRy*KphYFCB*b@km()U80zb1F|abP
zVOhh#z`)EP&A`A=#vseUz);1&%}~Q2%23Ck&(Of&&CtZ)%h1XY!_dwU$I!!&$<W78
z%rJqWmthjaN`@&6s~M&<>|&V7u!mtD!*PZM3>O&|F}!A2!pP3BjFFRJC8GqxYDOuB
z4UDP`n;7*OwlI1!Y-3Di*uj|2u)ChIjA1Wh1;arG83qQ1AO;RlN??#>kYiu~v+@`$
z7#P8<7=~B|CNL|GA(nxeL6pIhp^w3WfrX(M&bkO=G3vuu43-QG3|b64e;D-H8I)yz
zF$nx&&_l2k5lkqHff1CE7?>D185kIt7$#2sA!y7pX&b|o$@)Svg2xy*7)~(AGn``3
zVmQHI!f<wSjF2MZjLCIE(u^}E&k|B$p2;w4@<Aby`q|qU=FVbp)!xRiP)mCo1B7dY
z%9X&v1*hF5+S?eGEN5T`QAm+v#lXkFz;KCyo8bxrKf_f9DTeC|att>ZG#PF&=rY`9
zuwb~$V8d{a!H(gv0D}|569zYiXAGVUFByCp-b_vr)?!}HuwwE=;n~3}Bc)|zMOn5p
ztlj{Rc{>Jv1_p+Y3``847+4rSGq5pyVc=x=#-PaXgF%ns7lQ@EUj|o({|x?&ObjuM
zEDULk><lH0oDB60-xxX>c_-J4h|8~Ih-F}8U}2cVupS&;Yzz|^Hh`mxlcASk<K(R(
z!OWW&Hc#dj)nH>3V&G&Ho@^;9AF+jDD+40~F9QREGXpayz8NHUGi-|#+OeHsm(~^r
sv26@{g${0GIJ}MF7|6X$;FQV+QphL)PB=UuHiINI;V?3s0LR@)0C#47-~a#s

delta 1100
zcmeCt-=HmU>ff$?3=9k=42Remm>3z9Co3|`ZPd$P=TK%S;bACcD4V>3-9(Lxfsvtt
zhryA-iHkv*p^As0nxTx5fh9e)B$$h#mZ6@Vp^lM34WxInEeD4I4?_ck2_pkrYGG+&
zPBBPJ6Awc(Op7Z>pp}QA4JHsic^$_lfo>j#RE9Jz24RL?9)>=K{>cTLm9|rO7}^;+
zK!VeF7^XAKU}Rt^&a6shWMJ0N^aPnRi-%!0g8(A~cTs*xVo7RHW_m^mNPI32!@S9A
zTz)Kz7#Y+-4ik3C%uUTJ&dkr_VpzzqgolBfVd><RTy>1=Cu?xaNN;3h;C0GREJ{&`
zF3HSEEw<%iSjVs#q-x9Lcy1|<bqw2h7`8L)nB2&1&A*G0fiV`OU=K)a@8r|mMjY!H
z_VX~TVOYDFmB*O1o{^7%m4StUfuT!FMwTUI8$-rS1}W`r48>4x`8I~iZ45QD7+9It
zXvwf7$ih`LLb>JJ7+Mf2WLXm6Dk?!{By3|S-^NgkP{ERdFr%ejO9sp@-^S1gQ^K-_
zfq{XUL7IVq!Hj{Ifq|ilft#U*L4l!;L5ZQ6L6@PG!HJ=r!G)oR!JnazA%$TALmI<W
zhC+tv3~dZE89Er|GRQD6Fla%%#URTd#{dFd40#L|42&SJGQ=>%GBANyN(^xfu?)-%
zmJAFGYz!<)ii(O1jG&lgU}E58U|?Wk=$w2-*qEhj8$-`zZV?&5MGPDaOBm!CmN95C
zEMYKVSUK53M3HgA<R}qo#tD<lL{#c0GE8D%1iSkX0~6R5e=Y5843oDpOr6Exs=bY2
zCW32(%9X&vWnQDbjbRQ5FK1u}QAojK#lXkFz_5;in_&Y3Kf^`_DTd7q>T(QQ7&IBS
zG3YXEXRu({$za2<i@}azKZ6s)0R}gQLkyk_M;Uw>PE2+X)ncB{uwZho=<NE1k<v1<
zqAc4P7H@!uy&VHT0|UcZ1}27c3@i-i8Q2&uFmN(lVo+qb!l1`+jlqK9CW9-(Z3cga
zdkirQ4;a!I9y63MJY}e7xWv%O@Ddycb_{F`3=Gqtalphdg<%;(ECVA03&SLa<={AA
zW0=6Of(sl6oD97TD<@AB3ua!$uzK=yF%33`cMO~i?<b3j%iFABSPKnRX9i|)EK2TX
wSQja@VLQVntt|{<+ZeVA?cBz&dmF<(kQbQ1$%hTB@XO=^aZ&aI;MhC}07+v0yZ`_I

diff --git a/bin/de/deadlocker8/roadgame/logic/CenterType.class b/bin/de/deadlocker8/roadgame/logic/CenterType.class
index b31e76b38449f2fe3fb3f95b2ff8225b7d0f2c11..65050bad771b43ca35e05a7554646de24ce2d847 100644
GIT binary patch
delta 586
zcmcc0*~!Iq>ff$?3=9k=40aQ_mT+=-h59*%c>4QITocVE%)=nUAUc_sQ7urMhk=!W
zje~)mlYx;ziid$6#NhyOWO*1kKpajGM}dcd6U5;Hag=!&xIi3k5J!!Nft!I1#M0nl
z;9=mMT+XP?C_H&Fqm!HggAqG}AtQr8R$^JAeokUux_)qFaY<?}4}&p-$z*1x4mJxO
z22%#h$rG7YGqO*%W!9*7kOUdWz#t$6GK_(NfrWvCfscWofssLgfq`K@0}BHPRPSbB
zj1&@N-p(MjnL!N9kzfIHB*7eMRxn2f%#mXQbL7DsMRqVp3CvO90CQ9Y*!D6oMlx?=
zs22;4WZA?Z863&Fi9sefl5G=%d~hWDCI+S8NRCYms==EX)HgCPFfcJ_GB7Z3F)%SO
zFt9TCF)%Y|fki<wA`GHX*BUY~GcYqSFtBTB%WP-RMrdSXU}Ru`YT^O2*%@>g*cce<
z88{hq8T6p~%@|n0`o%Ues7HD;Ywe4)0lCwcS$YS9zRm`)jUabGjAMkmfs?_M!3=7K
h76TL50xls&tsM;J2N)P}>tkZzw*nh#&0qtjZ2>Q(O&$OM

delta 534
zcmeC=y2{CQ>ff$?3=9k=3|14lmQ36k$tJ|ZAj}{#S%Oi`MU01mm4S_eft{0qkwKD&
zfgQx*0C8k^7&t&2P7p_)hk+Bs;R11#co?`C*gz~59tLg(p2_`;+KfVzcQZQ4=`iTA
zGw3oh2xKLeCF<uS=B4WgR~DC~=JGJ;GZ;*kX6j%w;bAajFrB=TX*DC;<WOdfdI2er
zAq)%*EDRhBybOE{j12q?3=G{2EDRu!zMFwDQb>S#JA>e622n6aoCVC00CS{R!5nEY
zN0trDkppuS*ufk{j=c<wk<6PIM1vz)HZe#9N3w2WkPePy+r%Ij9LZk4i9s=VGlTL*
z1_lNu22}<I1}+9B1_lOJ21f>F1~srKNJf}J1nM$F24)6k1_lOpEp3_Y4C)AtYz&MH
z3{XuxU^Y901_K)d0|O_6CW97KyBPy3Si9IJ2IWX^<|3_qkv1R~`Z7!JV9?gt0Jah2
u4v2A#a5r!=7%~_^4bfs?0$ac(#Hh7{!T10JBW`_63}#?6%^57fv?T!bSwzwR

diff --git a/bin/de/deadlocker8/roadgame/logic/EdgeType.class b/bin/de/deadlocker8/roadgame/logic/EdgeType.class
index 9f4e1e0a5de4ad1283c3f0f788cba96bbce0f029..ca53f7a1949f36faf120b94122eb729e723e46fe 100644
GIT binary patch
delta 551
zcmcb^F_BZ?)W2Q(7#J8#7|hrim>3z<CMz<jO*D(-=5lrn4)Jk~clC3b*c-_v$ipDS
zAUyGnnz<+s11kd?2Ln4N10#b34+A@h!vW$*^DuCLIGiAk91jC00~?5?z{9}Bz&+W9
zQJYb4at5P=oCbpyJA)=8gFsedS)zVUVqUs_aAk2xYAz3hHiOROV~lNV20RS942F|~
zn3mVGI!J;nWMFWR1la|qIT+Z$G$)7_kOG;{z`(%5z`?-7z{|kMz{kMAP{F{$00JSq
z85kpl_?fpe2yA8$0dvGyz#MTfN0JrHkpgpM*uWfF_Pq>@k<6PIM1t!hSvE0<2S>7Q
zVvq`sWZT3b8@!o8ej@_|0~3QH0|NsW0}}%S11p0G12cmXSQI29#2^fHh9Ltp12Y2y
z1G|>C%ytH4ghn<7Mg|6`CLS=Gok0cU9|leaRR%SvcC&g0R<M4tO$_pp-ppG2B5go!
z^JSLa!Jw|Q0c<149T4Lf;cnn$&}Gnr8luI(1h#-nh*4_?gZ=>qM%?<C7>vMX8Z(%H
HX+~23LzF}Y

delta 498
zcmbQpd51&b)W2Q(7#J8#7>w8%m>3z<CO>3Sn`jm}aZWg!01ty8gV4mEYFZ*Z46F=n
z91QH742%roJPhn04hM)M#lyhCzy@N;@Gx*Pa7_+l)MgZz+{EZ0r^2Ad&Y;T3Adr<<
zmZ+bTn3t{}Tv=R_n#;qW&Y&^*0b?7R4iAGSgYM)Ursef44w4`{7#JKRLB@k=4hA*`
z1_3FMxeN>pEDRhB+zdPnj10UC3=F9ZEDRvvxSN47QizXvI|Kh_24OHqlm*NY19K!;
z!5m4py$p<z%$pd5gCkisF^C06vTkCK4BpHjy^(=|fr+7BmVtqRi-C!Ofq|7loq?G_
z4lE3k5@Zm9+G)tZ%)rdRz`(AhEwi0L9-<SZk&S_ofdQ%s<Uj@nb_NBI;~6*^6d9DD
z+RYeP!P><(F-S*xGi&XOv;jHFmsxrTL#ndQ2C$6?;~3#?;AGHb(1IGG#lQr%j7x}7
YYX^h&0R~3g`j{B>z-H<*7=UR*0MAf7C;$Ke

diff --git a/bin/de/deadlocker8/roadgame/logic/ScorePosition.class b/bin/de/deadlocker8/roadgame/logic/ScorePosition.class
new file mode 100644
index 0000000000000000000000000000000000000000..1dfdede1104449f8c5cbf5eaa8b4d5eafc142e8a
GIT binary patch
literal 1246
zcmX^0Z`VEs1_l!bD|QAZMh5MaRQ;6H#FU);<m}WU3;m+}#FX^J+*JLX{PfIZ{ov&M
zqSS!=;>?oF{5*CB7DfiXti-ZJ{hY+SbbZ&n(p*LcRzLrs5D!KMT^|yRvSwspadiw1
zVPs$p_74SVX9;%&aoL<*{X$%W7#X--{X%_J!W?}<U4t1J^rA^Lox>(MCo?az#Ey}H
zSwl07k%7fIKP8oeft8DakwJ)uL6|{=k%7$yszgk~2jQ*YlA_GKbZbw|Fir+W1~DE6
zRt7c>26hlfl81pE#NhyOWOx`jKpajGN1lg)6U5;Hag=x%xER<#EEOIGZU!Dk27aH+
zyi~u^+@#c^ki?{%R7M6NpZw&+oUp{AOb{O|$i=|SAjHVPQj(Eb%*eo2mY7qTTFl5`
zprJ{c@3|Os81&c~bQu{0kbG5HT#}m0!=TS#z{tRvSX7i)nVerx$;hCE?05g9tkmQZ
zYfq%$fC+hmLXjQpDE~A@21jIV&>+(!DUv|mHQ`|}WH4o9Fhw@aIVZ8W*c!<RaN`l)
z0i``_Mh33n{L-T2RJTlUkfNkkJ&<BX2F~Ej^t{B9(xOyG274qkK?c~6<X$^#2SWx%
z24)5Z1~vytP^w^HaF7Hg2r$jTzy_u{p)?nW7LWqPKLY~;3j+rOF9RO~BLhDJ14B0h
z3j+wG?`B|(6cS+G&LFs%K@`jpX9060z#J)7Fh?59k!1sO<iH#Sb}&bgV=n_^B=aT)
z(cnmyO$-vjk*u2-q=O^bHZjNrN3w5XPz>J8puCZRfq{uZm4ShQi-C!Ofq|95k%5^(
z4J-<h5oQp9I?RxP8SFuJEp3_Y4C)AtYz&MH3{XuxU^Y902FQmDoD7-_T2Sp~46I=7
zVw)J0BfXim_C?x&+~><Iy@NqpX9L(mkTW2rF~Xg|$zaG}1T{m8feCCrmk^`Y4hG``
T42-z-F)^5d%`|7Q0MnKL62uj=

literal 0
HcmV?d00001

diff --git a/bin/de/deadlocker8/roadgame/logic/Tile.class b/bin/de/deadlocker8/roadgame/logic/Tile.class
index 353ec31f90ee61f0bfa879869a966057cf9e4ee5..470d138b908273e7ebc9045cbd0b07ca0aef9c6a 100644
GIT binary patch
literal 3165
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

literal 3562
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
RhGGQ;1qMcjdT^=G007vz=j8wZ

diff --git a/bin/de/deadlocker8/roadgame/logic/TileType.class b/bin/de/deadlocker8/roadgame/logic/TileType.class
index 7c39c14ec9f44df69a4dffa6ebc4cfbda6edc71f..cdf5661d7657148b9499a7465e5323098ab47678 100644
GIT binary patch
delta 2504
zcmdm}c~_J7)W2Q(7#J8#7(TNzFipPCqPS7dh?SGWE7Z?9#M9qza~dlvW4!}|4-bPc
zg8?H0tE+E7NF*l%BZEH=13Lp72LlI)6U4*70pf6iIH5cYoFEPth!erXzy;!Pb22zE
zMDs9cG8lk_V|f_3LBc#BP67`D4~WAH;w1Ah@PaseAWj+&10MrhJqH6nh?mL3zz>oV
z;AF61$l+ngWzc41;Bs~h4)Jk~clC1tsmbSI5CEwW1aXRZ7z9BaArPmOhd~I$5e9K8
zco>9191#$wnukFI#1RFVTgSst4>FexVlK$p^^H6Xq7ZjCgIH`F3}PVhHjq-VcRF|&
z#6Tv9gN*CuVGsv#BtV=#9tH^zM-s%D$ipBB;z)rwQ+ODpKpbfhXF3mqG>9Vu;>_Y<
zkO6UIL7cff4E3@go*c-^1w0Ja5SJ|CVUPm}%Yzgx<zbKqaTGwD6+8?IAdVu4vzmuN
z5yVjfan|uLD1kW2AkIb}24xUO1;p9H!=M7<sDe1#c^Fhd95oPU7Y~EJ8i=P3;_c;O
zPzP}|K%4_S3>qMgCWvzw6t`?3*3rqi90oooc^KRnPBAiwY4~I%mL=-vB<7{-2bUCO
z=A~PEYKDOnp5bB8V$cS$&haqlKv)-e7<3`5OFRsE5Z0B+FF9_=J!N>#&hU(pK>*3P
z%HopLTporO3@<0&=WJtp%fs-B;oatJE=ML;@9hjOn;HCeGcZO91+Z>nFb5->O$;`h
z7$9<iV7Xv6umoJ%9;`0}EEhKUBadi(IG7#D0agbwz-ALe6j)shST0TgVu%e)2}Cj;
zESV_44i+{CTMgHl1eQz@fEWw69-=c9ESWCAxrxEN9;VwIW@!dkHcNnO6GJx4P`I!1
zz>)<5+%QRq5{Q=z!IH%SJYY$P3|wakSh7rj7bXdjuZL(Y2g_Cp@FB@&!-BF3ELkJK
zzlot1j3B|(01l%juw;vX08FM9?C4goWII^0Q$P?b3DI1;i2)+n1(K{6>Jbn^lC^=!
z_JU-E`UQl+E`kKFIm|^9z><>$L|~E-d5B*ogC(a5h=L^{u?E*U4J<iBKnyHtzNsFX
zbRY?1CRld1fH+tdqSa;-14METSaP0#1XvPcqs=CU`Cy+e1WPU!kOWIY0>~UDxdbe^
zOh5`OX$~Vn&aL0fupBJAQa~Cko()S7Alc0ftH6?L1Y}^65P67;)`BJ13&_F(5R%X!
z5wig-xk*3{Nz!H$14ME&SaPd?d_7DS;#r97Hn8jt0R^z6Ihce;%ucZ6ZUIHGFhtTE
z7HfOJlKTXdz><&%hfD4UOCA(Z2B#267}dkG%pn1ly$p<z%$pcIf+JZrG57^XvTkAs
z431>m#1Il3$-appJQ$QsV}c_=88SXN5|s6lf+InhEHyY1l$|nyBSHBlFE|pELkfc<
zL3yDhI1-fV%Y!39$-62z5|ogef+Immw!J<$5|lc-f+Io6us1jol;9==M}m^p<lsn9
zBAON)2}&+AgCjxdVoq=*C<QDGjs(T^lHf>CtS%3Z1V!Jf;7CwJtqqO@MahQXNKoK!
z4vrL%-^8#jI1&_|JA)%ZA-5+u5)?-Jg9Rf&!Eq>fGsBUM3=9lR496z-32tXRKG{u3
zQT2qD?pB7=T9PbV8O~}+vTkKKuO-R0mEoe6B>Pr|%P{plLdu@U85kJs7}yvX7*rUp
zf@u)z8iO_iGg$08gEj*Tn013en}HR~y2+poR;j{pi@|__oq>_zHp89C>xHG1k1;SX
zurV+)Ffe#BfK28Avss}gGcw#|xHI{Uuv9%logY?p_ZaRlFfy1jFfiydFhb1G+QM*t
z1H_|nOM<a#zK>P&MI_DjU?U^2>VClR5R289k#vJK$70dU$?%BbF;ue|11mTL#Wpb<
ziS%aH+81d9N~FHb(mNQQr0Ad<#|So#iGhKEli?M^Yp5Yw3`}6lxP%zBb}+m-z`%%G
R9}~lSaOiws_z0#y0RTaOI(q;B

delta 2428
zcmcbsxlxn%)W2Q(7#J8#7~ZloFipPCqPS7dh?R}i)i)p{a&smtD`Pz)gAWe_I|CaB
z0|zGqBZEH=0|$u13E~9tFmQr6Tp&&;4+9s7!_CRyz!1U1pvhnW5{}|w;06ivfH<){
z3_KtXFNl-C!@vvT@PRnVJPdpw4nK&K#>2o5;s|gu)LSrQ@-SpEXfrafIXec2__%@;
z<nS;EfD{OVIQcvbf*_6%h*QMFAOzwFgE*x;48kCe2#8a`!yp3Uh=SZ#&BGuHabGQn
z#m2!P1`=)nSp{}>6AyzJNOiq9NN+0-gE)vM0pfJ<Fi3znk|0hu4}&C#BL(90@i0h%
zIMN`_L>>ld5Jv{YnZm;$1LDYnY?;o(U=6W+CJ%!wNLUV}W)2U79Ec+i;>_n^kOy(<
z6+pa2JPZmTo+5~|l!rkP#8CoqR`4(=fjG(_&T1Y8We`UN#97C~paSBkf;by_7*s(V
zH4tYD4}%(rqYmP1=V4F>aWp`jT|5jLAdV)8vlkSHY-}Lr{>d{r4A>6yFt{-snS7o@
zR`VDSgBF7}Na_R+gARmsiibfL!aBplpa)@{n=HzCL+(DqLw1G-j0^%<iDilUIf;4c
z`oWdOC8@bQ438KdPv+)oV|&iS@Py&T=ILCHOq%xF8C*6qc<*Llj1=-^-NaxHMmC!m
zY&J1K<ov*L0h1YdMe75>>|l1VB8XCRn7R<KTo?yf4q|}KCWdgZ`H^6`XaP2uq&e6E
zh-3^{GEM+)Dnv6xG9E0MC;&FL9^pKQY!X;DMSv4*F5E#7$yBgpx&YTEh77QE5OX2E
z$_7j33UI?DAxa>Ud0@!`0Uod<L<STd^<d8wf@O;Zcww>-1rV(zV97E8J|xKuSP+$i
zB`XE^VUiFRRe_DI0ZY~i2!JJRU?jxOMzCakvw$F2JOf5TWLv<pZ303tVTg+$lI>v0
zP61)CBqZSBk=6y4>=6)wNkZfye(42E_6vxDC2ck_)I&lTB0B*rJ4rwcEDMo=n>!gS
zIaNR$ENKId9-B=J)4)ER0hXL4AOV(y*a(-L4VIiMAPJU)1dusYXFbC_u<QZ>DX^?L
zjD)yoAy{&;fHYV*18gbWMN7bv%LHU#k`Q@_&gEdql>)LbNr-nK5wi*`xkf;4Q#~jl
zLG;;dVt~l51<S4%kcVl7corhL0W7&mKmjZXaV{tv!NIT@EV)%c5lPZ~69XjHwt*#g
z2q=LiA@OZq50l*qmfbC&jFhh7nQf1N%3cP>Najrp9>I|;n;5)<BUv{w_ytF@ZDI%v
zj%44&5E2~8v56rvI1-d0V}c_=SuZ{~5|qi3f+In>DK$6}ly9<wBSASNFE|pE7Ygfx
zBSERYBsdb3zRQCnK`FT=I1-d*8-pW3iL)g*5|j+vgCju+t}8eal(c$-BSDF1LU1G~
zwM-6<1f`1^!I7X8FgrLB6xZ{DBSDe6FgOwveM^EPK@qh)I1&^ktAZm1<Tf#^4c3hW
z1@ngBNKk-o4vqu`-L~LJP$2CLjs%6qp5V<4`!+H#FfcJ3n7m7HyZb>f8^m{GaA#m-
zFlAt1n8Cozz`?-4prWNMvz_6PmhM)Dqgs+ITN#dPNwRKbIH@Jcww2+umL&UDhO;oU
zb_gkZg3PjGU<2u7I1i>77*rT8FlaL{gT*c~Xfv>YS(g~J8Cb!r%M99Jl`0HZ7z`NL
z85kL^GF+RSC@idXbOYFF2N)O_*cccY7#KVmKo;<T*{o0t7#XfZl^;h}?uS+R4XE;y
z=*ok!D!&O;ei~hQ1Xks@7;aBa6qc$-I64-KI!=Z=40oYnZN|U~4jr*g4ErLznYH#s
z+JF+LFSGOxhI=~bwlacEV`5-n;AD8h@Dyr>76TJFP`HE`wRSK(JHVjBh+88Q!%J|u
LzG8R{rr!Vn6Rjji

diff --git a/bin/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.class b/bin/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.class
new file mode 100644
index 0000000000000000000000000000000000000000..3ba3204aaf69ea918c8d3f0f55a53162629f1077
GIT binary patch
literal 769
zcmX^0Z`VEs1_l!bZFUAGMh3%_RQ;6H#FU);<m}WU3;m+}#FX^J+*JLN%$(GM#N_N^
z{gBL@)PTg~Z2!De5R;vOg^@vvcx{XfY&MyBnI(3N49psuVT=qc&iN^+91NU{3@jn3
z#U)$}%naN-46F=1j0~b0K3R!niTXK-dFlGWB}JKe>DHQI><oO241!>Z(vr*^eUHTA
z4Bx~8E(Tr(0gy&EP6kE>Asz-{1`$RER*=Js85x8jCLwFE=423KkYHyJXJk;r<^G)f
z^vq<imqRKGQh6988Kf8)_=Ef%UE(9+y+Zw*Lp=Tc7#TEth%>;Ni$R7#j-5dk<^izJ
zJo8FY(^HFh7~~lg7#Y~h5_3vZ{nHp3#56oLA<jltW)1SF5)Xqig9;-9b3thdBZCEU
zIQb`Kr6!kHBWZ++Ae#jhVr1a=$;?ajE6q(xEec6Y%1LEp5c0`SPRt2QEXoA&p@J+W
z8JWe548}P92?}Pc>BE|lfh#z_v?w{%EfZwC2q@7Yr5`;|L^3EcFfuSRfB+){BLgb~
z8v`Q)I|BnlI0G{SBLf42qLvWHb_Oo3-3+{u+Zp(`G6-sIVG!KJAj-0XL3$g5V)#Y|
z1_mYuRR#tIAqEx(1_o{hHU?e>K?Xhs1qOZwH3kL-9*98<>I@nT3=E76nqVDT001n;
A-v9sr

literal 0
HcmV?d00001

diff --git a/bin/de/deadlocker8/roadgame/tilepacks/TilePackTest2.class b/bin/de/deadlocker8/roadgame/tilepacks/TilePackTest2.class
index 0fc0a42fa46fc5c2b515fc7e081a374a02c49833..3d4179dd775e273a740f495f86066a86bd6f3ff5 100644
GIT binary patch
delta 145
zcmX@jwt`LI)W2Q(7#J8#81&c~m>3!KCp$7qOfFy&pJ@M;huhgPIK;;_-YwL}XR<Bh
zF@AoiKuD0Mqo2FaWL2hloLLOa42%p63<i_WFzMTFWME)mV$fh<U=U+qWnf_7W?*CB
mWe{ZGV^Cn=XV7O5V9;b>VBmr1V9;XFW?*1oWY7WY(ggsV_Zb5K

delta 167
zcmZ3%cAAar)W2Q(7#J8#7z{UZX)$tg1o=C<#Jl>rOm<*Aro`>+7#!l`8t)eB<HN}y
z#-Pc=pv54?$iM|w<s2FmHd&Nu9%n5BGXo<71B3nKJxuxmT3Z+dH!*0i>|l`I#-JF!
zk%57Mi9wrzfkBFaje&uIn}LmimqCz$k3oTfpFy8NfWeMIkU@umfq@5N2!k$z9s>gd
KBZEFzrvU&ASR2~_

diff --git a/bin/de/deadlocker8/roadgame/ui/Controller.class b/bin/de/deadlocker8/roadgame/ui/Controller.class
index 6e265d0979e69ea2319d25d6a4e0a313b0dfb1d6..6ca952b4bd98b496615477761e4006d0ce8d23c6 100644
GIT binary patch
delta 1968
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

delta 1814
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

diff --git a/bin/de/deadlocker8/roadgame/ui/Scoring.class b/bin/de/deadlocker8/roadgame/ui/Scoring.class
new file mode 100644
index 0000000000000000000000000000000000000000..13872ad5e44dc7305784239d595934a8a23e0647
GIT binary patch
literal 6984
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

literal 0
HcmV?d00001

diff --git a/src/de/deadlocker8/roadgame/logic/Board.java b/src/de/deadlocker8/roadgame/logic/Board.java
index f95fe9d..92b6647 100644
--- a/src/de/deadlocker8/roadgame/logic/Board.java
+++ b/src/de/deadlocker8/roadgame/logic/Board.java
@@ -11,24 +11,24 @@ public class Board
 	private ArrayList<Tile> tiles;
 
 	public Board(TilePack tilePack)
-	{	
+	{
 		this.tilePack = tilePack;
-		this.tiles = new ArrayList<>();			
+		this.tiles = new ArrayList<>();
 		initBoard();
 	}
-	
+
 	private void initBoard()
-	{		
+	{
 		TileType tileType = getRandomTile();
 		if(tileType != null)
-		{	
+		{
 			Tile startTile = new Tile(tileType);
 			startTile.setPosition(new Point2D(0, 0));
-			
-			tiles.add(startTile);	
-		}	
+
+			tiles.add(startTile);
+		}
 	}
-	
+
 	public TilePack getTilePack()
 	{
 		return tilePack;
@@ -38,7 +38,7 @@ public class Board
 	{
 		return tiles;
 	}
-	
+
 	public Tile getTile(int x, int y)
 	{
 		for(Tile currentTile : tiles)
@@ -48,15 +48,15 @@ public class Board
 				return currentTile;
 			}
 		}
-		
+
 		return null;
 	}
-	
+
 	public TileType getRandomTile()
 	{
 		return tilePack.getRandomTile();
 	}
-	
+
 	public boolean containsTileAtPosition(int x, int y)
 	{
 		for(Tile currentTile : tiles)
@@ -66,108 +66,144 @@ public class Board
 				return true;
 			}
 		}
-		
+
 		return false;
 	}
-	
+
 	public ArrayList<Point2D> getFreeEdges(Tile tile, Tile playerTile)
 	{
 		ArrayList<Point2D> freeEdges = new ArrayList<>();
-		
+
 		int x = (int)tile.getPosition().getX();
 		int y = (int)tile.getPosition().getY();
-		
-		//North
-		if(!containsTileAtPosition(x, y-1))
-		{	
-			if(isCrossCheckValid(playerTile, x, y-1))
-			{
-				freeEdges.add(new Point2D(x, y-1));
-			}			
+
+		// North
+		if(!containsTileAtPosition(x, y - 1))
+		{
+			if(isCrossCheckValid(playerTile, x, y - 1))
+			{
+				freeEdges.add(new Point2D(x, y - 1));
+			}
 		}
-		
-		//East
-		if(!containsTileAtPosition(x+1, y))
+
+		// East
+		if(!containsTileAtPosition(x + 1, y))
 		{
-			if(isCrossCheckValid(playerTile, x+1, y))
+			if(isCrossCheckValid(playerTile, x + 1, y))
 			{
-				freeEdges.add(new Point2D(x+1, y));
-			}		
+				freeEdges.add(new Point2D(x + 1, y));
+			}
 		}
-				
-		//South
-		if(!containsTileAtPosition(x, y+1))
-		{	
-			if(isCrossCheckValid(playerTile, x, y+1))
-			{						
-				freeEdges.add(new Point2D(x, y+1));
-			}			
+
+		// South
+		if(!containsTileAtPosition(x, y + 1))
+		{
+			if(isCrossCheckValid(playerTile, x, y + 1))
+			{
+				freeEdges.add(new Point2D(x, y + 1));
+			}
 		}
-		
-		//West
-		if(!containsTileAtPosition(x-1, y))
+
+		// West
+		if(!containsTileAtPosition(x - 1, y))
 		{
-			if(isCrossCheckValid(playerTile, x-1, y))
+			if(isCrossCheckValid(playerTile, x - 1, y))
 			{
-				freeEdges.add(new Point2D(x-1, y));
-			}		
+				freeEdges.add(new Point2D(x - 1, y));
+			}
 		}
-		
+
 		return freeEdges;
 	}
-	
+
 	private boolean isCrossCheckValid(Tile tile, int x, int y)
 	{
-		//North
-		if(containsTileAtPosition(x, y-1))
-		{			
-			if(!tile.getN().equals(getTile(x, y-1).getS()))
+		// North
+		if(containsTileAtPosition(x, y - 1))
+		{
+			Tile nextTile = getTile(x, y - 1);
+
+			if(tile.getN().equals(EdgeType.CASTLE) || tile.getN().equals(EdgeType.CASTLE_END))
+			{
+				if(!(nextTile.getS().equals(EdgeType.CASTLE_END) || nextTile.getS().equals(EdgeType.CASTLE)))
+				{
+					return false;
+				}
+			}
+			else if(!tile.getN().equals(nextTile.getS()))
 			{
 				return false;
-			}			
+			}
 		}
-		
-		//East
-		if(containsTileAtPosition(x+1, y))
+
+		// East
+		if(containsTileAtPosition(x + 1, y))
 		{
-			if(!tile.getE().equals(getTile(x+1, y).getW()))
+			Tile nextTile = getTile(x + 1, y);
+
+			if(tile.getE().equals(EdgeType.CASTLE) || tile.getE().equals(EdgeType.CASTLE_END))
+			{
+				if(!(nextTile.getW().equals(EdgeType.CASTLE_END) || nextTile.getW().equals(EdgeType.CASTLE)))
+				{
+					return false;
+				}
+			}
+			else if(!tile.getE().equals(nextTile.getW()))
 			{
 				return false;
-			}	
+			}
 		}
-				
-		//South
-		if(containsTileAtPosition(x, y+1))
+
+		// South
+		if(containsTileAtPosition(x, y + 1))
 		{
-			if(!tile.getS().equals(getTile(x, y+1).getN()))
+			Tile nextTile = getTile(x, y + 1);
+
+			if(tile.getS().equals(EdgeType.CASTLE) || tile.getS().equals(EdgeType.CASTLE_END))
+			{
+				if(!(nextTile.getN().equals(EdgeType.CASTLE_END) || nextTile.getN().equals(EdgeType.CASTLE)))
+				{
+					return false;
+				}
+			}
+			else if(!tile.getS().equals(nextTile.getN()))
 			{
 				return false;
-			}	
+			}
 		}
-		
-		//West
-		if(containsTileAtPosition(x-1, y))
+
+		// West
+		if(containsTileAtPosition(x - 1, y))
 		{
-			if(!tile.getW().equals(getTile(x-1, y).getE()))
+			Tile nextTile = getTile(x - 1, y);
+
+			if(tile.getW().equals(EdgeType.CASTLE) || tile.getW().equals(EdgeType.CASTLE_END))
+			{
+				if(!(nextTile.getE().equals(EdgeType.CASTLE_END) || nextTile.getE().equals(EdgeType.CASTLE)))
+				{
+					return false;
+				}
+			}
+			else if(!tile.getW().equals(nextTile.getE()))
 			{
 				return false;
-			}	
+			}
 		}
-		
+
 		return true;
 	}
-	
+
 	public ArrayList<Point2D> getPossibleLocations(Tile tile)
 	{
 		ArrayList<Point2D> possibleLocations = new ArrayList<>();
-		
+
 		for(Tile currentTile : tiles)
 		{
 			possibleLocations.addAll(getFreeEdges(currentTile, tile));
-		}		
-		
+		}
+
 		return possibleLocations;
-	}	
+	}
 
 	public boolean tileCanBePlaced(Tile tile)
 	{
@@ -199,40 +235,40 @@ public class Board
 		}
 		return true;
 	}
-	
+
 	public Dimension getDimension()
 	{
 		int minX = 0;
 		int maxX = 0;
 		int minY = 0;
 		int maxY = 0;
-		
+
 		for(Tile currentTile : tiles)
 		{
 			if((int)currentTile.getPosition().getX() < minX)
 			{
 				minX = (int)currentTile.getPosition().getX();
 			}
-			
+
 			if((int)currentTile.getPosition().getX() > maxX)
 			{
 				maxX = (int)currentTile.getPosition().getX();
 			}
-			
+
 			if((int)currentTile.getPosition().getY() < minY)
 			{
 				minY = (int)currentTile.getPosition().getY();
 			}
-			
+
 			if((int)currentTile.getPosition().getY() > maxY)
 			{
 				maxY = (int)currentTile.getPosition().getY();
 			}
-		}	
-		
-		return new Dimension(minX, maxX, minY, maxY);		
+		}
+
+		return new Dimension(minX, maxX, minY, maxY);
 	}
-	
+
 	public void addTile(Tile tile)
 	{
 		tiles.add(tile);
diff --git a/src/de/deadlocker8/roadgame/logic/CenterType.java b/src/de/deadlocker8/roadgame/logic/CenterType.java
index 68afdd9..502c26a 100644
--- a/src/de/deadlocker8/roadgame/logic/CenterType.java
+++ b/src/de/deadlocker8/roadgame/logic/CenterType.java
@@ -2,5 +2,5 @@ package de.deadlocker8.roadgame.logic;
 
 public enum CenterType
 {
-	EMPTY, CASTLE, CASTLE_TRIANGLE, CHURCH, ROAD
+	EMPTY, CASTLE, CASTLE_TRIANGLE, CHURCH, ROAD, JUNCTION
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/logic/EdgeType.java b/src/de/deadlocker8/roadgame/logic/EdgeType.java
index 6f049c0..c3e4f85 100644
--- a/src/de/deadlocker8/roadgame/logic/EdgeType.java
+++ b/src/de/deadlocker8/roadgame/logic/EdgeType.java
@@ -2,5 +2,5 @@ package de.deadlocker8.roadgame.logic;
 
 public enum EdgeType
 {
-	GRASS, ROAD, CASTLE
+	GRASS, ROAD, CASTLE, CASTLE_END
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/logic/ScorePosition.java b/src/de/deadlocker8/roadgame/logic/ScorePosition.java
new file mode 100644
index 0000000..9c6e337
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/logic/ScorePosition.java
@@ -0,0 +1,6 @@
+package de.deadlocker8.roadgame.logic;
+
+public enum ScorePosition
+{
+	NORTH, EAST, SOUTH, WEST, CENTER
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/logic/Textures.java b/src/de/deadlocker8/roadgame/logic/Textures.java
index 5674851..c52bf9a 100644
--- a/src/de/deadlocker8/roadgame/logic/Textures.java
+++ b/src/de/deadlocker8/roadgame/logic/Textures.java
@@ -62,5 +62,5 @@ public class Textures
 	public Image getImageCenterRoad()
 	{
 		return imageCenterRoad;
-	}		
+	}	
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/logic/Tile.java b/src/de/deadlocker8/roadgame/logic/Tile.java
index a7a52bc..af60820 100644
--- a/src/de/deadlocker8/roadgame/logic/Tile.java
+++ b/src/de/deadlocker8/roadgame/logic/Tile.java
@@ -4,35 +4,30 @@ import javafx.geometry.Point2D;
 
 public class Tile
 {
+	private TileType type;
 	private EdgeType N;
 	private EdgeType E;
 	private EdgeType S;
 	private EdgeType W;	
 	private CenterType C;
 	private Point2D position;
+	//TODO use
+	private boolean marked;
 	
-	public Tile(EdgeType N, EdgeType E, EdgeType S, EdgeType W, CenterType C, int x, int y)
+	public Tile(TileType type, int x, int y)
 	{		
-		this.N = N;
-		this.E = E;
-		this.S = S;
-		this.W = W;
-		this.C = C;
+		this.type = type;
+		this.N = type.getN();
+		this.E = type.getE();
+		this.S = type.getS();
+		this.W = type.getW();
+		this.C = type.getC();
 		this.position = new Point2D(x, y);
 	}
 	
-	public Tile(EdgeType N, EdgeType E, EdgeType S, EdgeType W, CenterType C)
-	{		
-		this.N = N;
-		this.E = E;
-		this.S = S;
-		this.W = W;
-		this.C = C;
-		this.position = null;
-	}	
-	
 	public Tile(TileType type)
 	{		
+		this.type = type;
 		this.N = type.getN();
 		this.E = type.getE();
 		this.S = type.getS();
@@ -65,6 +60,11 @@ public class Tile
 	{
 		return C;
 	}
+	
+	public TileType getType()
+	{
+		return type;
+	}
 
 	public Point2D getPosition()
 	{
diff --git a/src/de/deadlocker8/roadgame/logic/TileType.java b/src/de/deadlocker8/roadgame/logic/TileType.java
index 3ce5f99..8e42011 100644
--- a/src/de/deadlocker8/roadgame/logic/TileType.java
+++ b/src/de/deadlocker8/roadgame/logic/TileType.java
@@ -3,11 +3,11 @@ package de.deadlocker8.roadgame.logic;
 public enum TileType
 {
 	//only roads
-	ROAD_END(EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY),
+	ROAD_END(EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS, CenterType.JUNCTION),
 	ROAD_STRAIGHT(EdgeType.ROAD, EdgeType.GRASS, EdgeType.ROAD, EdgeType.GRASS, CenterType.EMPTY),
 	ROAD_CURVE(EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY),
-	ROAD_T_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, CenterType.EMPTY),			
-	ROAD_X_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, CenterType.EMPTY),	
+	ROAD_T_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, CenterType.JUNCTION),			
+	ROAD_X_JUNCTION(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, CenterType.JUNCTION),	
 	
 	//roads with churches
 	ROAD_END_CHURCH(EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS, CenterType.CHURCH),
@@ -17,11 +17,11 @@ public enum TileType
 	ROAD_X_JUNCTION_CHURCH(EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, CenterType.CHURCH),	
 	
 	//single castles
-	CASTLE_SINGLE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS,CenterType.EMPTY),
-	CASTLE_TWO_SINGLE_OPPOSITE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.CASTLE, EdgeType.GRASS, CenterType.EMPTY),
-	CASTLE_TWO_SINGLE_NEIGHBOR(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY),
-	CASTLE_THREE_SINGLE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, CenterType.EMPTY),
-	CASTLE_FOUR_SINGLE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, CenterType.EMPTY),
+	CASTLE_SINGLE(EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.GRASS, EdgeType.GRASS,CenterType.EMPTY),
+	CASTLE_TWO_SINGLE_OPPOSITE(EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.CASTLE_END, EdgeType.GRASS, CenterType.EMPTY),
+	CASTLE_TWO_SINGLE_NEIGHBOR(EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.GRASS, CenterType.EMPTY),
+	CASTLE_THREE_SINGLE(EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.GRASS, CenterType.EMPTY),
+	CASTLE_FOUR_SINGLE(EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.CASTLE_END, CenterType.EMPTY),
 	
 	//special castles
 	CASTLE_TRIANGLE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, CenterType.CASTLE_TRIANGLE),
@@ -30,16 +30,16 @@ public enum TileType
 	CASTLE_U(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.GRASS, CenterType.CASTLE),	
 	
 	//single castles with roads
-	CASTLE_SINGLE_ROAD_STRAIGHT(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.GRASS, EdgeType.ROAD,CenterType.EMPTY),
-	CASTLE_SINGLE_ROAD_CURVE_RIGHT(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS,CenterType.EMPTY),
-	CASTLE_SINGLE_ROAD_CURVE_LEFT(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.ROAD, EdgeType.ROAD,CenterType.EMPTY),
-	CASTLE_SINGLE_ROAD_T_JUNCTION(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD,CenterType.EMPTY),
-	CASTLE_SINGLE_ROAD_END_IN_CASTLE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.ROAD, EdgeType.GRASS, CenterType.ROAD),
-	CASTLE_SINGLE_ROAD_CURVE_RIGHT_END_IN_CASTLE(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS,CenterType.ROAD),
-	CASTLE_SINGLE_ROAD_CURVE_LEFT_END_IN_CASTLE(EdgeType.CASTLE, EdgeType.GRASS, EdgeType.GRASS, EdgeType.ROAD,CenterType.ROAD),
-	CASTLE_TWO_SINGLE_OPPOSITE_ROAD_STRAIGHT(EdgeType.CASTLE, EdgeType.ROAD, EdgeType.CASTLE, EdgeType.ROAD, CenterType.EMPTY),	
-	CASTLE_TWO_SINGLE_NEIGHBOR_ROAD_CURVE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, CenterType.EMPTY),
-	CASTLE_THREE_SINGLE_ROAD_END(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.ROAD, CenterType.EMPTY),
+	CASTLE_SINGLE_ROAD_STRAIGHT(EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.GRASS, EdgeType.ROAD, CenterType.EMPTY),
+	CASTLE_SINGLE_ROAD_CURVE_RIGHT(EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.ROAD, EdgeType.GRASS, CenterType.EMPTY),
+	CASTLE_SINGLE_ROAD_CURVE_LEFT(EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.ROAD, EdgeType.ROAD, CenterType.EMPTY),
+	CASTLE_SINGLE_ROAD_T_JUNCTION(EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.ROAD, EdgeType.ROAD, CenterType.JUNCTION),
+	CASTLE_SINGLE_ROAD_END_IN_CASTLE(EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.ROAD, EdgeType.GRASS, CenterType.JUNCTION),
+	CASTLE_SINGLE_ROAD_CURVE_RIGHT_END_IN_CASTLE(EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.GRASS, EdgeType.GRASS, CenterType.ROAD),
+	CASTLE_SINGLE_ROAD_CURVE_LEFT_END_IN_CASTLE(EdgeType.CASTLE_END, EdgeType.GRASS, EdgeType.GRASS, EdgeType.ROAD, CenterType.ROAD),
+	CASTLE_TWO_SINGLE_OPPOSITE_ROAD_STRAIGHT(EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.CASTLE_END, EdgeType.ROAD, CenterType.EMPTY),	
+	CASTLE_TWO_SINGLE_NEIGHBOR_ROAD_CURVE(EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.ROAD, EdgeType.ROAD, CenterType.EMPTY),
+	CASTLE_THREE_SINGLE_ROAD_END(EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.CASTLE_END, EdgeType.ROAD, CenterType.JUNCTION),
 	
 	//special castles with roads
 	CASTLE_TRIANGLE_ROAD_CURVE(EdgeType.CASTLE, EdgeType.CASTLE, EdgeType.ROAD, EdgeType.ROAD, CenterType.CASTLE_TRIANGLE),
diff --git a/src/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.java b/src/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.java
new file mode 100644
index 0000000..9f3a1ed
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/tilepacks/TilePackOneTile.java
@@ -0,0 +1,16 @@
+package de.deadlocker8.roadgame.tilepacks;
+
+import java.util.HashMap;
+
+import de.deadlocker8.roadgame.logic.TileType;
+
+public class TilePackOneTile extends TilePack
+{
+	public TilePackOneTile()
+	{
+		super("Test");
+		
+		tiles = new HashMap<>();			
+		tiles.put(TileType.ROAD_X_JUNCTION, 1);			
+	}
+}
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java b/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java
index f3c6919..32ed8ce 100644
--- a/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java
+++ b/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java
@@ -11,8 +11,7 @@ public class TilePackTest2 extends TilePack
 		super("Test 2");
 		
 		tiles = new HashMap<>();		
-		tiles.put(TileType.ROAD_END, 1);
 		tiles.put(TileType.CASTLE_FULL, 1);
-		tiles.put(TileType.ROAD_CURVE, 1);		
+		tiles.put(TileType.CASTLE_TRIANGLE, 1);		
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/roadgame/ui/Controller.java b/src/de/deadlocker8/roadgame/ui/Controller.java
index 529a117..4aff970 100644
--- a/src/de/deadlocker8/roadgame/ui/Controller.java
+++ b/src/de/deadlocker8/roadgame/ui/Controller.java
@@ -248,6 +248,8 @@ public class Controller
 				return new ImageView(textures.getImageRoad());
 			case CASTLE:
 				return new ImageView(textures.getImageCastle());
+			case CASTLE_END:
+				return new ImageView(textures.getImageCastle());
 			default:
 				return new ImageView(textures.getImageEmpty());
 		}
diff --git a/src/de/deadlocker8/roadgame/ui/Scoring.java b/src/de/deadlocker8/roadgame/ui/Scoring.java
new file mode 100644
index 0000000..6ca2364
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/ui/Scoring.java
@@ -0,0 +1,328 @@
+package de.deadlocker8.roadgame.ui;
+
+import de.deadlocker8.roadgame.logic.Board;
+import de.deadlocker8.roadgame.logic.CenterType;
+import de.deadlocker8.roadgame.logic.EdgeType;
+import de.deadlocker8.roadgame.logic.ScorePosition;
+import de.deadlocker8.roadgame.logic.Tile;
+import de.deadlocker8.roadgame.logic.TileType;
+import de.deadlocker8.roadgame.tilepacks.TilePackOneTile;
+import javafx.geometry.Point2D;
+
+public class Scoring
+{
+	private Tile tileToScore;
+	private Tile tile;
+	private Board board;
+	private int x;
+	private int y;
+	private int points;
+
+	public Scoring(Tile tile, Board board)
+	{
+		this.tile = tile;
+		this.board = board;
+		Point2D position = tile.getPosition();
+		this.x = (int)position.getX();
+		this.y = (int)position.getY();
+		points = 1;
+		tileToScore = tile;
+		this.tile = tile;
+	}
+	
+	private void setTile(Tile nextTile)
+	{
+		this.tile = nextTile;
+		this.x = (int)nextTile.getPosition().getX();
+		this.y = (int)nextTile.getPosition().getY();
+	}
+
+	public int getScoreForTile(ScorePosition scorePosition)
+	{
+		switch(scorePosition)
+		{
+			case CENTER:
+				scoreCenter();
+				break;
+			case NORTH:
+				scoreEdge(tile.getN(), scorePosition);
+				break;
+			case EAST:
+				scoreEdge(tile.getE(), scorePosition);
+				break;
+			case SOUTH:
+				scoreEdge(tile.getS(), scorePosition);
+				break;
+			case WEST:
+				scoreEdge(tile.getW(), scorePosition);
+				break;
+			default:
+				break;
+		}
+
+		return points;
+	}
+
+	private void scoreEdge(EdgeType edgeType, ScorePosition scorePosition)
+	{
+		switch(edgeType)
+		{
+			case CASTLE:
+				scoreCastle(scorePosition);
+				break;
+			case CASTLE_END:
+				scoreCastle(scorePosition);
+				break;
+			// TODO
+			case GRASS:
+				break;
+			case ROAD:
+				scoreRoad(scorePosition);
+				break;
+			default:
+				break;
+		}
+	}
+
+	private void scoreCenter()
+	{
+		switch(tile.getC())
+		{
+			case CASTLE:
+				scoreCastle(null);
+				break;
+			case CASTLE_TRIANGLE:
+				scoreCastle(null);
+				break;
+			case CHURCH:
+				scoreChurch();
+				break;
+			case JUNCTION:
+				scoreRoad(null);
+				break;
+			case ROAD:
+				scoreRoad(null);
+				break;
+			default:
+				break;
+		}
+	}
+
+	private void scoreChurch()
+	{
+		// North
+		points = board.containsTileAtPosition(x, y - 1) ? points += 1 : points;
+
+		// North-East
+		points = board.containsTileAtPosition(x + 1, y - 1) ? points += 1 : points;
+
+		// East
+		points = board.containsTileAtPosition(x + 1, y) ? points += 1 : points;
+
+		// South-East
+		points = board.containsTileAtPosition(x + 1, y + 1) ? points += 1 : points;
+
+		// South
+		points = board.containsTileAtPosition(x, y + 1) ? points += 1 : points;
+
+		// South-West
+		points = board.containsTileAtPosition(x - 1, y + 1) ? points += 1 : points;
+
+		// West
+		points = board.containsTileAtPosition(x - 1, y) ? points += 1 : points;
+
+		// North-West
+		points = board.containsTileAtPosition(x - 1, y - 1) ? points += 1 : points;
+	}
+
+	private void scoreRoad(ScorePosition scorePosition)
+	{		
+		switch(scorePosition)
+		{
+			case NORTH:
+				if(board.containsTileAtPosition(x, y - 1))
+				{
+					Tile nextTile = board.getTile(x, y - 1);
+					if(nextTile.getS().equals(tile.getN()))
+					{
+						if(nextTile.getC().equals(CenterType.EMPTY))
+						{
+							if(nextTile.getN().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.NORTH);
+								return;
+							}
+
+							if(nextTile.getE().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.EAST);
+								return;
+							}
+
+							if(nextTile.getW().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.WEST);
+								return;
+							}
+						}
+						else
+						{							
+							points++;
+						}
+					}
+					else
+					{
+						points++;
+					}
+				}
+				break;
+			case EAST:
+				if(board.containsTileAtPosition(x + 1, y))
+				{
+					Tile nextTile = board.getTile(x + 1, y);
+					if(nextTile.getW().equals(tile.getE()))
+					{
+						if(nextTile.getC().equals(CenterType.EMPTY))
+						{
+							if(nextTile.getN().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.NORTH);
+								return;
+							}
+
+							if(nextTile.getE().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.EAST);
+								return;
+							}
+
+							if(nextTile.getS().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.SOUTH);
+								return;
+							}
+						}
+						else
+						{
+							points++;
+						}
+					}
+					else
+					{
+						points++;
+					}
+				}
+				break;
+			case SOUTH:
+				if(board.containsTileAtPosition(x, y + 1))
+				{
+					Tile nextTile = board.getTile(x, y + 1);
+					if(nextTile.getN().equals(tile.getS()))
+					{
+						if(nextTile.getC().equals(CenterType.EMPTY))
+						{
+							if(nextTile.getE().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.EAST);
+								return;
+							}
+
+							if(nextTile.getS().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.SOUTH);
+								return;
+							}
+
+							if(nextTile.getW().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.WEST);
+								return;
+							}
+						}
+						else
+						{
+							points++;
+						}
+					}
+					else
+					{
+						points++;
+					}
+				}
+				break;
+			case WEST:
+				if(board.containsTileAtPosition(x - 1, y))
+				{
+					Tile nextTile = board.getTile(x - 1, y);
+					if(nextTile.getN().equals(tile.getS()))
+					{
+						if(nextTile.getC().equals(CenterType.EMPTY))
+						{
+							if(nextTile.getE().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.EAST);
+								return;
+							}
+
+							if(nextTile.getS().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.SOUTH);
+								return;
+							}
+
+							if(nextTile.getN().equals(EdgeType.ROAD))
+							{
+								setTile(nextTile);
+								scoreRoad(ScorePosition.NORTH);
+								return;
+							}
+						}
+						else
+						{
+							points++;
+						}
+					}
+					else
+					{
+						points++;
+					}
+				}
+				break;
+			default:
+				break;
+		}
+	}
+
+	private void scoreCastle(ScorePosition scorePosition)
+	{
+
+	}
+
+	public static void main(String[] args)
+	{
+		Board b = new Board(new TilePackOneTile());
+		Scoring s = new Scoring(b.getTile(0, 0), b);
+
+		Tile t = new Tile(TileType.ROAD_STRAIGHT);
+		t.setPosition(new Point2D(0, -1));
+		if(!t.getN().equals(EdgeType.ROAD))
+		{
+			t.rotateRight();
+		}
+
+		b.addTile(t);
+		System.out.println(b.getTile(0, 0));
+		System.out.println(s.getScoreForTile(ScorePosition.NORTH));
+	}
+}
\ No newline at end of file
-- 
GitLab