From 74cdd6f3f4b395807168ff93ea04803553a4460e Mon Sep 17 00:00:00 2001 From: KangMu Date: Thu, 4 Feb 2016 13:35:13 -0500 Subject: [PATCH 1/2] Added text file, screenshot and dat file. --- .idea/.name | 1 + .idea/cc_tools.iml | 14 + .idea/encodings.xml | 6 + .idea/misc.xml | 14 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + .idea/workspace.xml | 402 ++++++++++++++++++++++++ Convert.py | 5 + __pycache__/cc_dat_utils.cpython-35.pyc | Bin 0 -> 10512 bytes __pycache__/cc_data.cpython-35.pyc | Bin 0 -> 19087 bytes data/pfgd_test.txt | 76 +++++ data/pfgd_test_screenshot.png | Bin 0 -> 43963 bytes pfgd_test.dat | Bin 0 -> 234 bytes 13 files changed, 532 insertions(+) create mode 100644 .idea/.name create mode 100644 .idea/cc_tools.iml create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 Convert.py create mode 100644 __pycache__/cc_dat_utils.cpython-35.pyc create mode 100644 __pycache__/cc_data.cpython-35.pyc create mode 100644 data/pfgd_test.txt create mode 100644 data/pfgd_test_screenshot.png create mode 100644 pfgd_test.dat diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..59590c9 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +cc_tools \ No newline at end of file diff --git a/.idea/cc_tools.iml b/.idea/cc_tools.iml new file mode 100644 index 0000000..64bae8a --- /dev/null +++ b/.idea/cc_tools.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..88b37df --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ed3a031 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..9f307ee --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1454599097936 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Convert.py b/Convert.py new file mode 100644 index 0000000..ee80482 --- /dev/null +++ b/Convert.py @@ -0,0 +1,5 @@ +import cc_dat_utils + +from_dat = cc_dat_utils.make_cc_data_from_dat("pfgd_test.dat") + +print(from_dat) \ No newline at end of file diff --git a/__pycache__/cc_dat_utils.cpython-35.pyc b/__pycache__/cc_dat_utils.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1a0694330241b553124e7a0e339c88e383e260e5 GIT binary patch literal 10512 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 I`Rd}Y0OANg#Q*>R literal 0 HcmV?d00001 diff --git a/__pycache__/cc_data.cpython-35.pyc b/__pycache__/cc_data.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14cee445722ebef254ecb9785245bf86b5bdddaa GIT binary patch literal 19087 zcmd^HU2GiJb)MNjlFOz3D3jKYnIgLa+mYmqE)Wv9bM6JBs zrDm2gxwX(FcKTAFeGAZ+q7UsuAM#MNMSunfP@q6tplFeY7U%#53KV_dQy==~7HGfk z+@G1*U6OJlrVm|dW@qoroqO)N=YHqsp39l3sq&9+|Jk>Hyx=(h=A=FaT%*j1j=GN1 zbetueU1!O4t~GN`Gw*zg-+AYgoU@ceQNd{zrKsoxIp>qSvy?|^$!U&B>6koNK+(9< zoRFdkDJr6<>@+8(XwuXzp|s*Or=)aB9vnl_9;dliiuRfZ$5Fb^Y3`TO{ibvRr3akm zw3JSp(lSa9I?ZRK^chn+iP9OTIV+{JrnG|6XPxFDDLo_vOrhwo(>x+YN2Cb!9CdD1 zpX-O^D}K-SqF%Vx=&gl8 z|11UMS^%+bH9V0nZ;s5r)X!DR{VCq{)Bs=ds(E34oX1>Ky~s%~;&K>Z=5^{UXLnOQ z8mqIkUY|vA#4bDTes|XG?=^kW_cJ}B#7K``#zo6c*H^mDwKlIS_4>m#zpd|p8O?5^UJoZo<@jpY1!cXB zu#BJK6i@qkN?0gYY&_&Z^CIH2m0~GZDI6$Nic;P{k^PVX3pk?paT*Cj03b*N0O(VI z6p#r2OLARuf-x!$=n33{qyTzYGC=^+CAgjhrzst{S*jU_Xz&I``&BkyvBV$^cy{bIR$)^Tx-a5 z!v((yFf|;}O`Hf=E*S#h`>^PQ7df9Gbts$#D`$JTI zi~Rv-&aJrpX9os+81~4w0uJHZ30#0(8i5ppWZDXYz_c_9J;y;v7?H*ysG$B{-i96% zIlAPX{M%qQoR?Xwk*i&+kxc%ATo(M)Y41TjClnCj_aa?SPK^W6P z^bwYVByz%B3)b&r!2qi{-_PSnA0Up<-kX<`6#l`=`o1IPaB`*3=qt%LpN7Z6@1ZC1aDC=&WnkkCQ zZ+vj;YW?kZuUvgME(IOI+PtWUrAZk)_1scL{ZP|!kR=4Tui=O|oCMuzcLx8;BiLf~ z;bOHM9>CKf)n<5*r)PM2jwgz8-Sdj5(9rwcSQ z0GqVhK6j;S;bBw)Z32Xrw$Y}gOn`5*C4!sd_74samqkF*W=ECN2DA|`a3S0W!nAVW zJ}j=J;auu^qwz9=Lu9DoXN>ZB$JrTe2dL+aKu;|tK>tL zHgMPvnZJPJX-(j%TJ2WouhzPqUf6B-f4cPy?%^>^V|i}tIed4m*Mos7)15ABBDmVL zX?GiNaJwDjeBBMZA9Xxc&CYAK^#$I+$E9wACJ;aTwsJa$ACyToLDfuDVw-n9E>OFu zNeX$nSsbWl~^!&9wzZ@>7ykKISYCwSQl$SWe1|cmUh4J=1tf@%av8Lr7>%gBC zp^Gc&k&Mg9h(M1LSmNB>bsQUUu7__p1c^{vc!7e^zUSBhw~vWK&T3KH0b5=~)g7^g zb2%<4Li;7~AFnsq@+){jcp9f|u%%1-G`0Zvveae4g-=<5BAm8TE*_9YX%O-9V7RE? zDHkuHCLhYRI88#HcI?IlNucWn87WVaP_mV_#XkI_J(wor=nw|q;1l9$3^K`Vc!Kbf_eJ7MuOxGv@&*WKx8MT- z7c#U0?tIVOQ4caIr~ONzY?In*v9|E(Kvf>{@1y9P%xSZ@SDGiaWM@0Ga$!scH+?JcfJG!fLP23HXq1%h7! zvW+PRz#2;7t7t&k+Z>6wC^d{{c7ZoXfZF#_uI3^@?I^v>qnUwMLOKj@oHA5PHP)x$ zg<*xKx&DSWQm))N?>vSo5+^7zCdIK44Mjty=p6bm?}Yp0G3E6<+~<4;m1tG=Um)LZ zrG`4n#K$1ICOjq_z2t>2fRNZNZ~hNH=(%*7wwW;>>Chm+iB}Htf?n$H;!r-1OI$h# zzh{rzKQfvhSwJPn$r545H*t{$RE?&~z}TF#{(^AGb*|i*aUMfui)Z*Tq7?89UB`WR z3=A-g%LLV=J1~vemR!dre|0tJG{vaH4JtA)6aJ1UxJbgM;jglEVC0FyKg1F3!AXVH zRFC1~JvXYq7Lgm`eWFrE0Dgi3B>?Da+Jc6ydXSDU+zadYuK$kZz<0HbkO>9nK~bFK z^s{)KzE|4n-q<$vaBpNi?P5PXr-iM!7<%Z!W|=1{N2Ny{Si$0Diy$3Cd3c;B(RtSD zR(e@EC~;XlVsY|Da-J>xA&!X7GC6+?l6F-8gS3t0{w{dg1dBfD;FQo_cBL|Ype!)b zK%xC`q!(~JEh8PuzSizCK6%4$+;4RPW3KuX+s-=d}j9aV3w7vI4mU~FU zIBRw4#=d~*-pGl>S6SZ6wP7%M;PS9sImTwI6aYhAD+XL{RzgxWehXs{bk(S z#=QS2TOu|gbnyJvbY}GupSNWGoQA&8l{WOHKpFbsD`;SluhcGog(GX@zpxd}R=513 zL5Bsj`6JV=wf0%sz+pe+#{!Psw)O$#BZW!Z{hLE*N2757K@8CCrVH?D;sR)~OgjN1 zyO41Q21r(`{~6DKhT<>7Gx%q+R5Xj3V1|EsnSLuLLH9ec*0=K$&Yd-He==9Wy!=VH zs@SIR-NIeSkWYV+9>Q?<=taOi08xoAk$4RQ&x7D?9Edm2Ov-^6H-sA>;tKB%Sdzrh zpW(>*5HD>j`on0-DY@I;#3_0cH7y=Dv>l;MkE~;X3DMujr#&;!aJa;`2){}eT*L`H z5q1oD7h{@hgN&ks@fnU`2jj#}%*sMK&3_B&yX9)IZ^qS-e!h-^VLzjyJF7g6t9)ia zKBx=+9mgn7y!H&-?Ki)qyGz^!+IJ8?P*99*$%xus zl~vK^I{?Cuu-2!7aQ`}_jQx(M)=!&)nS69>Z^I-@nFTxv|2$EC*K3LLB{Z{{L{A_- z&NMFu>-8-|lFzu6332f;wW9b6R}{a>xO#+>&bAP;Hz_(99ZVdlk>%gPi9Wl{ufSsA z@l*+x4MUhdQ{%?N+iCZnd-RdJRa4V(~YKLQNw%0Z$DGbr^ zOx9~K~) zdVn#u`5!jJAivl@PWBt7*dC@+KrTQd?&nip!Zc)~=?oBd#B_>NeXvtheS6p`%AkYT z8nVy6v}KpF+KxRUIEbVk$3-i(QlSHDs#pAxTBBg4P*X;hm}?s(8>Et&YTB}1Qq7PE z0*`Pc>vvF2M0Umd^^?MN2l2k6Db1teqF7W`$sjuHi8z@Z7_BM9?ubAac$}9`gvW3# zT0)04<2^>SbQXx)8tfcZ!(n!g7i!t%FcUhq>fSDB15Stk!jaYnlaklLI}IH6!?9by zvD?~Uk7W701td{g;4g=@fQJB8Z#RJdd;w5BqSaDrP2&dNp1@~;EHNna4)3wY>LkV#q4Ueh{5_8NJ)l!%nz1z*;vFFK z1m3YFWMXn=Qs#~l4w*71eM!S5#jp~xuo{h}0*nPr5RH}DggJ@iD{t*ZG@_wXr^~T#34VqgZw;bL<@*p4ogOzS z*V|;rvHKi3LaEJ;8)U&QfG8)$G1IsX+m8u|@=k*knGfgx0*;6a-~kqepmK1Q95A&T zLZu-y0of+Ur848V4+0w>()%DLq{M7k!2m4bx&kwAipj{va!^?MkHc8n@zy$lvc9bu zu^Z3|Yeh}Il(mwDSEDbvX9epJr%Yb5B(V$`fbzERO|UWkB|~iZ4K%8()@z2nS(qIn zHVv}23j4by&{97nK%23XXg`g@*>5G&U*jxf-?X+nKx^KfSpueAdO(deyC~k%AlPaf zQ0%^~!1jIiCk3|98m2wdo2QAknj}HnGMYx@H0mjUr z-xh2|dX7RTf%h#o}Ramho@c0UERlOq!s#gGt!XeSJ&FqT=C z*b|AaBj4U430x=_yk$DFLR{V(jkxdQ&Nhe(xcwB}|G77Q&=lx)BJ7>G(R~zf+mwRb z&xRmZ!pZ8Fkt=q)P{1N5QB_y6UBhq%%!?u)q6J_5%Y&v^%GCpOqUwvd5#f zf|ZB}uT)wAa6Vv%OWID_{9do=@X?h!7gB)?r0vL7f~=hmw^1eYq~BnJ;K*6`*h7hb zYoAYebBv{;EULVE87FO?hZ6N3#TR1t?^!v}88wI8=Onl>k}D}?@w7IraBg=D5!Nne zIt}kMaM%x#YXL{ZWu%c>0?rNf1B`NOm&*=8wVRxKmDP3?>_)y$`1W6c6pzGyZlC1p zpl|YMc7S`iUGJ!*!#O(K3i6}i;TkOWz|*%>WCFoYsc_nB^#GCB8W*j0J56YsE=sW7 z8^LS@XrXPWhfK6usw69|y%sihr<#)A?bZrjiHZ@ni}H<`P{?WQoLLF{PULmE*pi0& z^1LP-$IR+MQ%_~GUna)VeI&N*CM%}tfUAX4a`{i z@SF3phC}8h0uPLJ0UlNK3%;}3M4EG!C5&Frn~Q?Euz@iZeBkt!rDC;ST#73~m7ZP5 zLWSVQ6INE^$<$EBlc~{&_YUxCizFc$wts9e$iem}^N;)FuTz|d4Fvi;i8?@Ks}2}? zNiP_rqF-QzzLji>GNG8Fxg`M_*_+E->nB8c6c7bJtd$2}A@$9hANrDwiLKC5<3pzh zj^a;eFje-Bq{?Cx##PV<>lh^mNwc_rP=Dca_6IrV(Bp#S*s`fZ&STm1i~Z9N#+;9f zCT8^T?^R1G+Wzo|>Q{MmyAt?JwLAU`w0p&6ax*&29zNV7zwmb@7Q=Tj4*dzwlVS3X zNuGgPak)i&yDoTm$x}rHAY{KY^TQOqCjcV|b+NqZ@ofcyOMlG!%`+FzH6N>**JU2- z$Ep)*-x|G@kbA+`CNT1o4 z`t8z=Snyn3{e8Zizbca@w=!Ot4O!a2VLy3XE#Qc*QBrhf3>7st6c$T zzu9UB{rQtd#{ail}oCXQs#T3BU(THl7M5=hRxZ#3FcMl_@Xef03T`1>x> z&^A!_52+Eu#v0SZVT>bd3pfPaFW@4LaRN0eC7(-lNXeJ=ZM$PZChB3GCJwt*CTd0c zjK$!_hZoC`uX}i@%q3&2GR_nir3(WhCy|Grk#yRvoD*ekHOTc3WV(=bRPcBr_GDNZ znYFx2o;nE`%`#{dG8DPYfQ^5#tjlp-!Lly(NXF5A!YL}2B;|~4Si;* zkiD>$3eGxt0DshDhgmnn2JZ9J$~KkEKg=cPZw4U@Q~&?~ literal 0 HcmV?d00001 diff --git a/data/pfgd_test.txt b/data/pfgd_test.txt new file mode 100644 index 0000000..2db4eda --- /dev/null +++ b/data/pfgd_test.txt @@ -0,0 +1,76 @@ +Level Pack: + Level #1 + Time Limit = 230 + Chip Count = 5 + Map Title Field (type=3) + title = 'PfGD Test Level' + Map Hint Field (type=7) + hint = 'Gather all the chips to unlock the socket and get to the exit.' + Encoded Password Field (type=8) + password = [221, 216, 207, 220] + Upper Layer: + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 0 0 1 21 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 0 0 0 34 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 2 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 0 0 0 47 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 2 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 0 0 0 0 110 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + Lower Layer: + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \ No newline at end of file diff --git a/data/pfgd_test_screenshot.png b/data/pfgd_test_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6aeee1bb5317c655d09720d12148d454ec5c9806 GIT binary patch literal 43963 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 literal 0 HcmV?d00001 diff --git a/pfgd_test.dat b/pfgd_test.dat new file mode 100644 index 0000000000000000000000000000000000000000..2c7cf1e91df15cbfc728be811f7d2afbb00ed193 GIT binary patch literal 234 zcmZ3piiv@d;Smr&V_*f6*$n>`8UAxK{uc#u7#J8u!6by?jgUtTV07BOo_`x)U2P9b-q8OM30@B=F6hcyqOB8%k%TjX~*zMgD zOEOZ66cTfC6o3qc Date: Mon, 15 Feb 2016 13:25:55 -0500 Subject: [PATCH 2/2] Added json level data as well as json_utils. json_utils is not yet completely functional. --- .idea/workspace.xml | 471 +++++++++++++++++++++++++++++++++++++++----- cc_json_utils.py | 95 +++++++++ data/json_data.json | 210 ++++++++++++++++++++ 3 files changed, 732 insertions(+), 44 deletions(-) create mode 100644 cc_json_utils.py create mode 100644 data/json_data.json diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 9f307ee..8b4370a 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,7 +1,11 @@ - + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -41,6 +67,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -58,13 +104,19 @@ - @@ -77,7 +129,7 @@ - + @@ -90,33 +142,10 @@ - - - - - - - - - - - - - - - - - - + - + @@ -125,7 +154,7 @@ - + + + - + + - - + + + @@ -288,27 +336,46 @@ - + - + - - + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -392,11 +670,116 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cc_json_utils.py b/cc_json_utils.py new file mode 100644 index 0000000..a33e192 --- /dev/null +++ b/cc_json_utils.py @@ -0,0 +1,95 @@ +import cc_dat_utils +import cc_data +import sys +import json + +def make_cc_data_from_json(json_data): + cc_data_object = cc_data.CCDataFile() + for json_level in json_data: + cc_level = cc_data.CCLevel() + cc_level.time = json_level["time"] + cc_level.level_number = json_level["level_number"] + cc_level.num_chips = json_level["chip_number"] + cc_level.upper_layer = json_level["upper_layer"] + cc_level.lower_layer = json_level["lower_layer"] + + for json_field in json_level["optional_fields"]: + if json_field["type"] == 3: + field_title = json_field["title"] + cc_field = cc_data.CCMapTitleField(field_title) + elif json_field["type"] == 4: + json_traps = json_field["traps"] + cc_traps = [] + cc_buttons = [] + for json_trap in json_traps: + bx = json_trap[0] + by = json_trap[1] + tx = json_trap[2] + ty = json_trap[3] + button_coord = cc_data.CCCoordinate(bx, by) + trap_coord = cc_data.CCCoordinate(tx, ty) + cc_buttons.append(button_coord) + cc_traps.append(trap_coord) + cc_field = cc_data.CCTrapControlsField(cc_traps, cc_buttons) + elif json_field["type"] == 5: + json_machines = json_field["machines"] + cc_buttons = [] + cc_machines = [] + for json_machine in json_machines: + bx = json_machine[0] + by = json_machine[1] + tx = json_machine[2] + ty = json_machine[3] + button_coord = cc_data.CCCoordinate(bx, by) + machine_coord = cc_data.CCCoordinate(tx, ty) + cc_buttons.append(button_coord) + cc_machines.append(machine_coord) + cc_field = cc_data.CCCloningMachineControlsField(cc_buttons, cc_machines) + elif json_field["type"] == 6: + json_password = json_field["password"] + cc_passwords = [] + for json_password in json_password: + w = json_password[0] + x = json_password[1] + y = json_password[2] + z = json_password[3] + cc_field = cc_data.CCEncodedPasswordField(w, x, y, z) + elif json_field["type"] == 7: + field_hint = json_field["hint"] + cc_field = cc_data.CCMapHintField(field_hint) + elif json_field["type"] == 10: + json_monsters = json_field["monsters"] + cc_monsters = [] + for json_monster in json_monsters: + x = json_monster[0] + y = json_monster[1] + monster_coord = cc_data.CCCoordinate(x,y) + cc_monsters.append(monster_coord) + cc_field = cc_data.CCMonsterMovementField(cc_monsters) + cc_level.add_field(cc_field) + cc_data_object.add_level(cc_level) + return cc_data_object + +# Handling command line arguments +# Note: sys.argv is a list of strings that contains each command line argument +# The first element in the list is always the name of the python file being run +# Command line format: + +default_input_json_file = "data/json_data.json" +default_output_dat_file = "data/example_dat.dat" + +if len(sys.argv) == 3: + input_json_file = sys.argv[1] + output_dat_file = sys.argv[2] + print("Using command line args:", input_json_file, output_dat_file) +else: + input_json_file = default_input_json_file + output_dat_file = default_output_dat_file + print("Unknown command line options. Using default values:", input_json_file, output_dat_file) + +# Reading the JSON data in from the input file +json_reader = open(input_json_file, "r") +json_data = json.load(json_reader) +json_reader.close() #Close the file now that we're done using it + +make_cc_data_from_json(json_data) \ No newline at end of file diff --git a/data/json_data.json b/data/json_data.json new file mode 100644 index 0000000..6556dc7 --- /dev/null +++ b/data/json_data.json @@ -0,0 +1,210 @@ +[ + { + "level_number":1, + "time":230, + "chip_number":5, + "upper_layer":[ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,1,21,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,34,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,2,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,47,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,2,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,110,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + + "lower_layer":[ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "optional_fields":[ + { + "type":3, + "title":"Map Title" + }, + { + "type":4, + "traps":[ + [0,0,1,1] + ] + }, + { + "type":5, + "machines":[ + [2,2,3,3] + ] + }, + { + "type":6, + "passwords":[ + [221, 216, 207, 220] + ] + }, + { + "type":7, + "hint":"Squanch" + }, + { + "type":10, + "monsters":[ + [5,5] + ] + } + ] + }, + { + "level_number":2, + "time":230, + "chip_number":5, + "upper_layer":[ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,1,21,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,34,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,2,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,47,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,2,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,0,0,0,0,110,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + + "lower_layer":[ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], + "optional_fields":[ + { + "type":3, + "title":"Map Title" + }, + { + "type":4, + "traps":[ + [0,0,1,1] + ] + }, + { + "type":5, + "machines":[ + [2,2,3,3] + ] + }, + { + "type":6, + "passwords":[ + [221, 216, 207, 220] + ] + }, + { + "type":7, + "hint":"Squanch" + }, + { + "type":10, + "monsters":[ + [5,5] + ] + } + ] + } +] \ No newline at end of file