diff --git a/assets-cg/fxconv-metadata.txt b/assets-cg/fxconv-metadata.txt index be2bccc..3144da4 100644 --- a/assets-cg/fxconv-metadata.txt +++ b/assets-cg/fxconv-metadata.txt @@ -1,7 +1,7 @@ tileset.png: type: bopti-image name: img_tileset - profile:p4 + profile:p8 spritesheet.png: type: bopti-image diff --git a/assets-cg/maps/testCarte.tmx b/assets-cg/maps/testCarte.tmx index 0df2733..85b58e2 100644 --- a/assets-cg/maps/testCarte.tmx +++ b/assets-cg/maps/testCarte.tmx @@ -1,91 +1,91 @@ - + - + -1,3,2,1,3,38,1,6,6,6,3,3,3,3,1,3,2,0,1,1,1,1,1,209,183,181,212,0,0,0,0,0,175,177,0,0,0,0,0,0,0,0,0,0,0,0,0,146,147,147,147,147,147,147,148,35, -1,2,3,8,1,1,2,3,2,3,6,1,1,1,1,37,40,1,0,0,0,0,0,2,209,210,210,183,212,213,182,0,204,206,0,6,6,6,6,6,6,6,6,6,6,6,0,204,178,0,207,179,205,178,150,148, -1,3,8,3,1,59,0,60,60,61,6,6,1,3,1,1,1,1,6,6,6,6,1,0,2,1,1,180,184,210,211,1,0,0,61,1,6,6,6,6,6,6,6,6,6,6,2,0,175,207,207,177,1,204,178,150, -1,1,3,32,36,88,89,89,89,63,61,6,3,1,2,0,0,3,1,1,1,3,3,1,0,1,1,209,211,1,59,60,62,121,90,1,6,6,6,2,3,1,1,1,6,6,6,0,175,176,207,177,2,32,175,207, -6,2,1,1,1,117,118,118,118,91,90,2,37,2,2,0,0,1,2,3,3,2,32,2,1,0,2,1,1,1,88,120,92,118,119,1,6,6,34,0,0,0,0,0,1,1,1,0,204,178,176,150,148,32,204,178, -6,1,0,0,3,3,32,32,1,117,119,2,39,1,98,99,100,1,3,3,0,3,38,1,1,146,0,1,1,0,88,120,90,1,1,1,4,35,1,0,205,205,0,0,1,1,1,1,0,204,178,208,150,148,31,175, -6,2,0,0,3,3,3,1,1,3,2,1,3,3,98,99,73,71,1,1,2,3,2,2,1,175,0,1,1,59,62,92,119,1,1,0,0,0,0,1,240,242,175,0,1,1,1,1,1,0,175,208,207,150,0,149, -1,98,99,100,3,1,2,3,3,2,3,2,3,1,98,99,99,100,3,32,3,2,2,2,1,175,0,1,1,88,121,90,1,1,6,0,177,39,109,240,243,271,175,0,39,1,1,1,1,0,204,178,208,176,208,176, -1,98,99,73,70,70,70,70,70,70,70,70,70,70,72,99,99,100,2,37,33,36,1,2,1,175,0,1,1,88,89,90,1,1,6,0,177,240,241,243,273,300,175,0,31,1,0,0,1,1,0,204,205,205,205,205, -39,98,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,100,1,3,1,3,3,3,1,204,0,6,1,117,91,63,61,1,6,0,177,298,272,301,271,39,175,0,34,32,0,0,1,1,1,0,0,0,0,1, -1,127,128,128,128,128,101,99,99,102,128,128,128,128,128,101,99,100,3,2,1,0,0,1,2,0,6,6,6,2,117,91,90,1,6,0,177,4,298,299,300,31,175,0,37,151,154,182,1,1,1,0,1,1,1,0, -1,40,1,59,60,61,98,99,99,100,240,241,242,1,38,98,99,73,71,1,0,0,0,0,1,0,6,6,6,1,3,88,63,61,1,0,150,147,147,147,147,147,149,0,1,180,181,155,153,2,1,1,1,1,6,6, -6,1,1,88,89,90,98,99,99,100,269,270,271,1,35,98,99,99,73,70,70,0,0,70,71,0,38,6,6,3,3,88,121,90,1,0,176,176,176,176,176,176,176,0,151,154,213,184,211,2,1,1,1,6,6,6, -6,1,1,0,118,119,98,99,99,100,298,272,244,242,3,127,128,128,101,99,99,99,99,99,100,146,0,3,2,1,1,88,89,90,2,6,6,6,6,6,6,6,1,151,154,213,213,182,59,60,60,61,3,6,6,6, -6,6,1,1,1,1,98,99,99,100,1,269,270,271,2,40,35,2,98,99,99,99,99,99,100,175,0,2,3,1,3,117,91,90,3,1,6,6,6,6,6,6,6,180,181,181,184,211,88,120,92,119,2,2,6,6, -7,7,1,1,1,1,98,99,99,100,1,298,272,244,241,242,1,1,127,128,128,128,128,128,129,175,0,151,0,2,2,2,88,63,61,2,1,1,6,6,6,6,2,180,184,210,211,59,62,92,119,1,3,2,151,152, -8,1,33,1,1,1,98,99,99,100,3,1,298,272,301,271,3,3,2,2,3,2,3,1,1,175,0,180,155,152,153,2,117,91,63,60,61,1,1,1,6,6,3,209,211,59,60,62,121,90,1,151,152,152,154,213, -1,1,1,1,1,1,98,99,99,100,2,40,1,298,299,300,39,1,1,2,1,1,2,2,2,175,0,209,183,213,155,153,1,117,118,91,63,60,60,60,61,1,1,1,59,62,89,120,89,90,3,180,0,213,213,181, -1,34,1,1,1,1,98,99,99,73,71,37,2,1,3,32,5,1,3,1,3,2,1,3,1,175,0,2,180,212,181,155,152,153,1,117,118,118,91,120,63,61,59,60,62,120,121,92,118,119,3,180,213,184,210,210, -36,38,1,1,1,1,98,99,99,130,73,70,71,2,2,3,1,33,40,38,2,2,1,3,1,175,0,3,209,210,210,210,210,211,1,1,1,1,88,120,121,63,62,89,121,89,92,119,2,1,3,180,184,211,240,241, -1,1,1,1,1,69,72,99,99,130,130,131,100,0,2,1,1,3,1,36,39,1,2,2,2,175,0,1,1,1,1,1,1,3,6,6,6,1,117,91,120,121,89,89,92,118,119,2,2,3,151,154,182,240,243,270, -1,1,1,59,61,127,128,128,128,128,128,128,129,2,2,1,3,2,3,3,2,3,3,3,2,204,206,0,0,0,0,0,0,6,6,0,6,6,1,88,121,121,121,92,119,1,1,1,151,152,154,213,182,298,272,270, -1,1,1,88,63,61,1,1,1,1,38,2,2,2,1,3,0,33,3,3,3,1,1,3,3,3,2,204,205,205,205,178,0,6,6,6,6,6,1,117,91,89,121,90,3,1,2,151,154,212,212,213,155,153,298,272, -1,0,60,62,121,90,161,162,162,163,1,59,60,61,2,3,1,0,0,3,0,3,1,2,3,2,1,1,1,3,1,175,0,1,6,6,6,6,6,1,117,91,121,63,61,1,1,209,183,213,212,212,213,155,153,298, -59,62,89,121,92,119,190,191,223,192,59,62,89,63,60,61,2,1,3,0,3,2,2,2,1,59,60,60,61,1,2,204,206,0,0,0,0,0,0,1,1,117,118,118,119,3,3,2,209,183,212,181,213,181,155,152, -117,118,91,89,90,161,164,223,194,221,117,118,118,91,89,90,3,2,2,3,2,1,59,60,60,62,120,121,90,1,1,1,1,3,2,240,241,242,1,0,0,0,138,138,0,0,0,0,3,209,210,183,212,213,213,181, -241,242,117,118,119,190,223,194,221,146,147,147,148,88,121,90,146,148,3,3,2,59,62,121,121,121,120,120,63,61,1,1,0,0,3,298,272,244,241,242,204,205,0,0,204,178,176,150,0,0,2,209,210,210,210,210, -301,244,242,5,2,190,223,192,146,149,0,176,177,88,120,90,175,150,148,3,3,88,121,120,121,92,91,121,121,63,61,0,0,0,0,1,269,301,270,244,242,1,156,158,2,204,205,205,178,150,0,2,1,1,1,1, -301,270,271,4,1,190,223,192,175,176,207,207,177,88,120,90,204,178,150,148,3,88,120,120,92,119,117,91,121,120,63,60,0,0,1,1,269,270,270,270,271,1,185,187,1,3,2,2,204,178,150,0,0,0,0,1, -270,301,271,3,161,164,223,192,175,176,176,208,177,88,120,63,61,204,205,206,2,88,89,120,90,1,2,117,118,91,121,121,121,63,61,1,269,301,301,270,271,1,185,187,1,2,1,1,1,204,205,205,178,208,150,0, -301,270,271,4,190,191,194,221,175,176,176,176,177,88,120,121,90,3,2,2,1,88,120,120,90,3,3,2,2,117,91,121,120,121,90,1,269,301,270,270,271,156,159,187,5,39,1,240,241,242,3,3,204,205,205,205, -301,273,300,1,190,194,221,146,149,176,176,176,177,88,89,121,63,60,60,60,60,62,89,89,90,2,1,2,3,2,117,91,121,92,119,240,243,270,301,270,271,185,217,187,35,33,240,243,302,244,241,241,242,1,1,1, -301,271,4,161,164,192,146,149,208,176,176,176,177,117,91,121,120,121,120,89,120,121,120,89,90,3,3,1,1,2,1,88,89,281,282,282,282,282,282,282,282,283,217,187,40,37,269,301,273,299,272,301,271,1,1,1, -299,300,3,190,191,192,175,208,0,176,176,176,150,148,88,89,120,89,120,120,89,120,120,121,90,2,3,3,2,3,3,117,91,310,311,311,311,311,311,311,311,312,218,160,158,240,243,273,300,1,298,272,244,241,241,241, -147,148,1,190,222,192,204,178,176,176,176,176,179,206,88,120,121,92,118,118,118,118,118,118,119,1,2,1,1,2,1,1,117,119,298,272,301,301,270,270,271,185,218,189,216,269,270,271,2,2,1,298,272,270,301,270, -176,177,161,164,222,165,163,204,178,207,176,179,206,59,62,0,92,119,3,2,2,3,1,3,1,3,2,2,2,3,2,2,3,3,2,298,272,270,301,301,271,185,186,187,240,243,270,244,242,2,0,2,298,272,301,301, -176,177,190,222,222,191,165,163,204,205,205,206,59,62,89,89,90,2,1,3,2,3,2,2,1,2,1,0,1,3,0,1,2,0,156,158,298,299,299,299,300,185,217,187,298,299,272,302,271,2,2,3,3,298,272,301, -176,177,190,191,223,191,222,165,162,162,162,163,88,89,89,120,63,61,3,1,1,2,3,3,3,2,1,3,2,2,1,1,1,3,185,160,157,157,157,157,157,159,186,160,158,3,298,299,300,1,1,2,1,1,298,272 +1,3,2,1,3,38,1,6,6,6,3,3,3,3,1,3,2,0,1,1,1,1,1,209,183,181,212,0,0,0,0,0,175,177,0,0,0,0,0,0,0,0,0,0,0,0,0,146,147,147,147,147,147,147,148,35,1,1,1,1,146,147,149,207,208,150,149,177,1,2,2,1,298,299,299,272,301,301,273,299,299,299,299,272,270,270,270,270,270,301,270,301,301,270,301,301,301,270,301,301, +1,2,3,8,1,1,2,3,2,3,6,1,1,1,1,37,40,1,0,0,0,0,0,2,209,210,210,183,212,213,182,0,204,206,0,6,6,6,6,6,6,6,6,6,6,6,0,204,178,0,207,179,205,178,150,148,1,1,1,146,149,176,207,208,179,205,205,206,1,32,2,2,2,3,2,298,299,299,300,3,3,2,2,298,299,299,299,299,299,299,299,299,272,301,270,270,270,270,301,270, +1,3,8,3,1,59,0,60,60,61,6,6,1,3,1,1,1,1,6,6,6,6,1,0,2,1,1,180,184,210,211,1,0,0,61,1,6,6,6,6,6,6,6,6,6,6,2,0,175,207,207,177,1,204,178,150,148,1,1,175,176,176,179,205,206,2,2,2,2,2,2,3,3,3,33,38,1,2,2,1,31,32,39,38,1,2,30,30,30,1,3,1,298,299,299,299,272,301,301,270, +1,1,3,32,36,88,89,89,89,63,61,6,3,1,2,0,0,3,1,1,1,3,3,1,0,1,1,209,211,1,59,60,62,121,90,1,6,6,6,2,3,1,1,1,6,6,6,0,175,176,207,177,2,32,175,176,150,147,147,149,208,176,177,1,2,3,2,1,2,1,2,59,61,3,34,37,1,3,3,3,36,35,1,34,3,2,38,109,30,39,36,4,2,1,3,1,298,299,272,301, +6,2,1,1,1,117,118,118,118,91,90,2,37,2,2,0,0,1,2,3,3,2,32,2,1,0,2,1,1,1,88,120,92,118,119,1,6,6,34,0,0,0,0,0,2,3,2,0,204,178,176,150,148,32,204,205,205,178,208,207,176,207,177,3,2,2,3,3,32,2,3,88,63,60,61,1,3,2,1,2,1,3,2,3,3,3,161,162,163,33,2,5,39,34,40,37,30,3,298,299, +6,1,0,0,3,3,32,32,1,117,119,2,39,1,98,99,100,1,3,3,0,3,38,1,1,146,0,1,1,0,88,120,90,1,1,1,4,35,1,0,205,205,0,0,2,3,3,1,0,204,178,208,150,148,31,109,37,175,176,176,179,178,150,147,148,2,2,1,1,2,1,117,91,121,90,2,1,1,1,2,1,2,1,2,2,2,190,191,192,31,32,161,162,162,162,162,163,109,37,5, +6,2,0,0,3,3,3,1,1,3,2,1,3,3,98,99,73,71,1,1,2,3,2,2,1,175,0,1,1,59,62,92,119,1,1,0,0,0,0,1,240,242,175,0,1,2,1,3,1,0,175,208,207,150,0,147,147,149,176,176,177,204,205,178,177,2,3,2,1,3,2,1,117,91,63,61,1,2,2,2,3,2,3,1,1,1,190,223,165,162,162,164,223,222,191,222,165,162,163,30, +1,98,99,100,3,1,2,3,3,2,3,2,3,1,98,99,99,100,3,32,3,2,2,2,1,175,0,1,1,88,121,90,1,1,6,0,177,39,109,240,243,271,175,0,39,2,3,2,3,0,204,178,208,176,208,208,179,205,205,205,206,3,3,204,206,1,1,2,2,1,2,1,3,117,91,63,61,1,1,6,2,1,1,3,3,3,190,223,223,223,223,223,191,191,191,223,191,191,165,163, +1,98,99,73,70,70,70,70,70,70,70,70,70,70,72,99,99,100,2,37,33,36,1,2,1,175,0,1,1,88,89,90,1,1,6,0,177,240,241,243,273,300,175,0,31,3,0,0,3,1,0,204,205,205,205,205,206,3,32,1,2,2,2,3,2,3,1,1,2,3,2,1,3,1,117,91,90,6,6,6,1,2,161,162,162,162,164,223,191,223,223,191,222,191,191,191,222,222,222,192, +39,98,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,100,1,3,1,3,3,3,1,204,0,6,1,117,91,63,61,1,6,0,177,298,272,301,271,39,175,0,34,32,0,0,1,1,1,0,0,0,0,2,3,1,3,2,3,2,2,3,1,1,6,2,2,3,3,3,6,3,33,117,119,6,6,6,6,3,190,191,191,223,191,194,220,220,193,191,222,222,191,222,223,194,220,221, +1,127,128,128,128,128,101,99,99,102,128,128,128,128,128,101,99,100,3,2,1,0,0,1,2,0,6,6,6,2,117,91,90,1,6,0,177,4,298,299,300,31,175,0,37,151,154,182,3,1,1,0,2,2,1,2,3,2,1,3,2,2,3,6,6,6,6,3,1,2,6,6,6,3,39,2,6,6,6,6,6,6,219,220,220,193,222,192,2,1,190,223,222,223,191,223,194,221,2,6, +1,40,1,59,60,61,98,99,99,100,240,241,242,1,38,98,99,73,71,1,0,0,0,0,1,0,6,6,6,1,3,88,63,61,1,0,150,147,147,147,147,147,149,0,1,180,181,155,153,2,2,3,2,2,6,6,6,2,36,40,1,1,2,2,6,6,6,1,1,1,6,6,2,3,38,36,6,3,3,2,1,3,3,1,1,190,191,165,162,162,164,223,223,223,191,191,192,3,1,6, +6,1,1,88,89,90,98,99,99,100,269,270,271,1,35,98,99,99,73,70,70,0,0,70,71,0,38,6,6,3,3,88,121,90,1,0,176,176,176,176,176,176,176,0,151,154,213,184,211,2,1,3,1,6,6,6,6,2,40,38,36,39,2,1,2,6,6,1,2,151,153,151,152,153,34,31,3,161,162,162,163,161,163,3,2,190,194,220,220,220,193,223,194,220,220,220,221,1,6,6, +6,1,1,0,118,119,98,99,99,100,298,272,244,242,3,127,128,128,101,99,99,99,99,99,100,146,0,3,2,1,1,88,89,90,2,6,6,6,6,6,6,6,1,151,154,213,213,182,59,60,60,61,3,6,6,6,6,2,1,2,1,1,3,151,152,152,152,153,3,180,155,154,212,182,2,32,3,190,191,223,165,164,165,163,1,190,192,3,30,4,190,194,221,2,2,1,1,6,6,6, +6,6,1,1,1,1,98,99,99,100,1,269,270,271,2,40,35,2,98,99,99,99,99,99,100,175,0,2,3,1,3,117,91,90,3,1,6,6,6,6,6,6,6,180,181,181,184,211,88,120,92,119,2,2,6,6,2,1,151,152,153,11,2,180,181,213,213,182,3,180,181,212,213,155,153,2,2,190,194,193,222,223,222,165,162,164,192,39,38,1,190,192,3,2,6,6,6,6,6,6, +7,7,1,1,1,1,98,99,99,100,1,298,272,244,241,242,1,1,127,128,128,128,128,128,129,175,0,151,0,2,2,2,88,63,61,2,1,1,6,6,6,6,2,180,184,210,211,59,62,92,119,1,3,2,151,152,153,3,180,212,182,11,11,209,210,210,210,211,2,209,210,210,183,181,182,2,3,190,165,164,222,222,191,222,191,191,165,162,162,162,164,192,1,3,6,6,6,6,6,6, +8,1,33,1,1,1,98,99,99,100,3,1,298,272,301,271,3,3,2,2,3,2,3,1,1,175,0,180,155,152,153,2,117,91,63,60,61,1,1,1,6,6,3,209,211,59,60,62,121,90,1,151,152,152,154,181,155,152,154,213,182,1,2,6,6,6,3,1,2,1,3,3,209,210,211,2,3,190,191,223,223,223,222,223,222,223,222,222,191,223,191,192,2,1,2,3,3,6,6,6, +1,1,1,1,1,1,98,99,99,100,2,40,1,298,299,300,39,1,1,2,1,1,2,2,2,175,0,209,183,213,155,153,1,117,118,91,63,60,60,60,61,1,1,1,59,62,89,120,89,90,3,180,0,213,213,213,213,212,213,181,182,3,6,6,6,6,1,1,3,1,3,3,1,1,2,2,3,190,222,191,191,194,220,220,220,220,220,220,193,222,222,165,163,1,1,3,1,2,6,6, +1,34,1,1,1,1,98,99,99,73,71,37,2,1,3,32,5,1,3,1,3,2,1,3,1,175,0,2,180,212,181,155,152,153,1,117,118,118,91,120,63,61,59,60,62,120,121,92,118,119,3,180,213,184,210,210,210,183,213,213,155,153,6,6,6,3,2,1,2,1,3,161,163,3,3,3,161,164,223,222,194,221,1,3,6,6,2,2,219,193,223,191,192,109,3,1,1,3,2,2, +36,38,1,1,1,1,98,99,99,130,73,70,71,2,2,3,1,33,40,38,2,2,1,3,1,175,0,3,209,210,210,210,210,211,1,1,1,1,88,120,121,63,62,89,121,89,92,119,2,1,3,180,184,211,240,241,242,209,183,212,181,182,1,6,2,2,1,2,3,2,2,190,165,162,162,162,164,222,222,191,192,6,6,6,6,6,6,6,3,219,220,193,165,163,3,161,163,1,1,3, +1,1,1,1,1,69,72,99,99,130,130,131,100,0,2,1,1,3,1,36,39,1,2,2,2,175,0,1,1,1,1,1,1,3,6,6,6,1,117,91,120,121,89,89,92,118,119,2,2,3,151,154,182,240,243,301,244,242,180,181,213,182,3,1,3,3,3,3,2,1,1,190,223,191,223,191,191,191,222,194,221,3,6,6,6,6,6,2,2,1,2,219,193,165,162,164,192,3,240,241, +1,1,1,59,61,127,128,128,128,128,128,128,129,2,2,1,3,2,3,3,2,3,3,3,2,204,206,0,0,0,0,0,0,6,6,0,6,6,1,88,121,121,121,92,119,1,1,1,151,152,154,213,182,298,272,301,273,300,180,212,181,182,35,39,2,1,2,3,35,33,32,219,193,191,223,223,194,220,193,192,40,1,2,6,6,6,1,1,1,1,3,1,219,220,220,220,221,240,243,270, +1,1,1,88,63,61,1,1,1,1,38,2,2,2,1,3,0,33,3,3,3,1,1,3,3,3,2,204,205,205,205,178,0,6,6,6,6,6,1,117,91,89,121,90,3,1,2,151,154,212,212,213,155,153,298,299,300,1,180,213,181,182,34,33,2,2,2,6,2,2,1,2,219,220,220,220,221,2,190,192,39,31,3,1,2,1,2,151,153,1,2,1,240,241,241,241,241,243,302,301, +1,0,60,62,121,90,161,162,162,163,1,59,60,61,2,3,1,0,0,3,0,3,1,2,3,2,1,1,1,3,1,175,0,1,6,6,6,6,6,1,117,91,121,63,61,1,1,209,183,213,212,212,213,155,153,3,151,152,154,181,184,211,1,3,2,2,1,6,6,3,2,1,2,1,1,2,3,1,190,192,34,36,2,2,3,151,152,154,182,3,1,240,243,270,273,299,299,272,270,301, +59,62,89,121,92,119,190,191,223,192,59,62,89,63,60,61,2,1,3,0,3,2,2,2,1,59,60,60,61,1,2,204,206,0,0,0,0,0,0,1,1,117,118,118,119,3,3,2,209,183,212,181,213,181,155,152,154,213,212,184,211,3,9,1,2,2,6,6,6,6,2,1,2,39,36,37,37,161,164,165,163,3,1,151,152,154,213,184,211,2,240,243,301,273,300,2,3,298,272,270, +117,118,91,89,90,161,164,223,194,221,117,118,118,91,89,90,3,2,2,3,2,1,59,60,60,62,120,121,90,1,1,1,1,3,2,240,241,242,1,0,0,0,138,138,0,0,0,0,3,209,210,183,212,213,213,181,181,184,210,211,3,2,2,2,2,1,6,6,6,6,1,3,39,32,30,30,109,219,193,194,221,3,2,180,213,212,212,182,2,2,269,301,301,271,3,156,158,1,298,299, +241,242,117,118,119,190,223,194,221,146,147,147,148,88,121,90,146,148,3,3,2,59,62,121,121,121,120,120,63,61,1,1,0,0,3,298,272,244,241,242,204,205,0,0,204,178,176,150,0,0,2,209,210,210,210,210,210,211,6,6,3,3,1,3,2,6,6,6,6,6,1,1,31,109,2,240,241,242,219,221,39,2,2,209,183,212,212,182,1,240,243,301,273,300,156,159,160,158,3,1, +301,244,242,5,2,190,223,192,146,149,0,176,177,88,120,90,175,150,148,3,3,88,121,120,121,92,91,121,121,63,61,0,0,0,0,1,269,301,270,244,242,1,156,158,2,204,205,205,178,150,0,2,1,9,3,3,6,6,6,3,2,1,1,2,6,6,6,6,6,6,1,240,241,241,241,243,270,244,241,241,242,109,1,2,209,210,210,211,2,269,270,301,271,3,185,217,218,160,157,157, +301,270,271,4,1,190,223,192,175,176,207,207,177,88,120,90,204,178,150,148,3,88,120,120,92,119,117,91,121,120,63,60,0,0,1,1,269,270,270,270,271,1,185,187,1,3,2,2,204,178,150,0,0,0,0,2,3,2,146,148,1,3,1,3,6,6,3,1,3,240,241,243,301,270,301,270,270,270,301,301,244,242,3,34,34,2,34,1,240,243,270,270,271,156,159,218,186,186,217,217, +270,301,271,3,161,164,223,192,175,176,176,208,177,88,120,63,61,204,205,206,2,88,89,120,90,1,2,117,118,91,121,121,121,63,61,1,269,301,301,270,271,1,185,187,1,2,1,1,1,204,205,205,178,208,150,147,147,147,149,177,1,1,3,3,1,1,240,241,241,243,270,301,270,270,270,270,270,270,270,301,270,244,241,241,242,2,40,109,269,301,301,270,271,185,218,218,217,218,217,217, +301,270,271,4,190,191,194,221,175,176,176,176,177,88,120,121,90,3,2,2,1,88,120,120,90,3,3,2,2,117,91,121,120,121,90,1,269,301,270,270,271,156,159,187,5,39,1,240,241,242,3,3,204,205,205,205,205,205,205,206,3,1,3,240,241,241,243,301,301,301,270,270,302,270,270,270,270,270,270,270,301,270,270,270,244,241,241,241,243,301,301,301,271,214,215,188,186,186,218,186, +301,273,300,1,190,194,221,146,149,176,176,176,177,88,89,121,63,60,60,60,60,62,89,89,90,2,1,2,3,2,117,91,121,92,119,240,243,270,301,270,271,185,217,187,35,33,240,243,302,244,241,241,242,2,1,3,1,1,2,1,2,240,241,243,270,270,301,301,270,270,270,270,270,270,270,270,273,299,272,270,270,270,273,299,299,272,270,270,301,270,301,301,244,242,36,214,215,188,186,218, +301,271,4,161,164,192,146,149,208,176,176,176,177,117,91,121,120,121,120,89,120,121,120,89,90,3,3,1,1,2,1,88,89,281,282,282,282,282,282,282,282,283,217,187,40,37,269,301,273,299,272,301,271,3,2,2,1,3,1,240,241,243,270,270,301,270,270,270,270,270,270,270,270,270,273,299,300,32,298,299,299,299,300,1,37,298,299,272,301,301,270,301,270,244,242,1,5,214,188,186, +299,300,3,190,191,192,175,208,0,176,176,176,150,148,88,89,120,89,120,120,89,120,120,121,90,2,3,3,2,3,3,117,91,310,311,311,311,311,311,311,311,312,218,160,158,240,243,273,300,1,298,272,244,241,241,241,241,241,241,243,270,270,301,270,270,270,270,270,270,270,270,270,270,270,271,2,40,69,70,70,71,38,3,69,70,71,38,298,299,272,301,270,270,301,244,241,242,3,185,217, +147,148,1,190,222,192,204,178,176,176,176,176,179,206,88,120,121,92,118,118,118,118,118,118,119,1,2,1,1,2,1,1,117,119,298,272,301,301,270,270,271,185,218,189,216,269,270,271,2,2,1,298,272,270,301,270,270,301,301,301,270,270,270,302,270,270,270,270,270,270,270,270,270,270,244,242,109,127,128,101,73,70,70,72,99,73,71,33,35,298,272,270,270,270,301,270,271,3,214,215, +176,177,161,164,222,165,163,204,178,207,176,179,206,59,62,0,92,119,3,2,2,3,1,3,1,3,2,2,2,3,2,2,3,3,2,298,272,270,301,301,271,185,186,187,240,243,270,244,242,2,0,2,298,272,301,301,301,270,301,270,270,270,270,273,299,299,299,272,270,270,270,270,270,270,270,244,241,242,34,127,128,128,101,99,99,99,73,70,71,30,269,270,270,270,270,270,244,242,30,34, +176,177,190,222,222,191,165,163,204,205,205,206,59,62,89,89,90,2,1,3,2,3,2,2,1,2,1,0,1,3,0,1,2,0,156,158,298,299,299,299,300,185,217,187,298,299,272,302,271,2,2,3,3,298,272,301,270,270,270,270,270,270,273,300,35,33,33,269,270,270,270,270,270,270,270,270,270,244,241,241,242,4,127,128,101,130,130,99,100,36,269,270,270,270,302,270,270,244,241,242, +176,177,190,191,223,191,222,165,162,162,162,163,88,89,89,120,63,61,3,1,1,2,3,3,3,2,1,3,2,2,1,1,1,3,185,160,157,157,157,157,157,159,186,160,158,3,298,299,300,1,1,2,1,1,298,272,270,270,270,270,270,270,271,40,2,39,37,269,270,270,270,270,270,270,270,270,270,270,270,270,271,34,38,33,127,128,128,128,129,40,269,270,270,270,270,270,270,270,270,244 - + -295,295,294,294,0,0,0,0,0,0,294,294,295,295,294,0,0,108,0,0,0,0,0,0,0,0,137,138,138,138,138,84,0,0,82,138,138,138,138,138,138,138,138,138,138,138,84,0,320,321,322,0,0,0,0,0, -294,295,294,0,0,320,321,322,0,0,0,294,295,294,0,0,0,137,138,138,138,138,84,0,0,0,0,0,0,0,0,108,0,0,110,0,0,0,0,0,0,0,0,0,0,0,113,0,349,350,351,0,28,0,0,0, -294,0,0,0,0,349,350,351,0,0,0,0,294,0,660,661,662,663,0,0,0,0,137,84,0,0,0,0,0,0,0,137,138,138,139,0,0,0,0,0,0,0,0,0,0,0,137,84,378,379,380,0,57,0,0,0, -294,0,0,0,0,378,379,380,22,23,0,0,0,0,689,690,691,692,0,0,0,0,0,137,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,0,0,0,0,113,0,0,0,0,0,0,0,0, -0,656,657,658,659,0,0,0,51,52,0,0,0,0,718,719,720,721,0,323,324,325,0,0,137,84,0,0,320,321,322,0,0,0,0,0,0,0,0,82,83,83,203,84,0,0,0,113,0,0,0,0,0,0,0,0, -0,685,686,687,688,0,0,0,0,0,0,0,0,0,747,748,749,750,0,352,353,354,0,0,0,137,84,0,349,350,351,0,0,0,0,0,0,0,0,111,0,0,232,113,0,0,0,137,84,0,0,0,0,320,321,322, -0,714,715,716,717,245,24,25,0,246,0,24,25,245,0,0,0,0,0,381,382,383,0,0,0,0,108,0,378,379,380,0,0,0,0,82,83,83,83,139,0,0,0,113,0,0,0,0,137,84,0,0,0,349,350,351, -0,743,744,745,746,274,53,54,0,275,0,53,54,274,0,0,0,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,113,0,656,657,658,659,108,0,0,0,378,379,380, -0,0,29,0,0,303,0,0,0,304,0,0,0,303,0,0,0,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,113,0,685,686,687,688,137,84,174,0,0,0,0, -0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,635,636,637,638,0,79,142,0,0,0,0,0,0,0,0,111,0,0,0,0,0,29,0,113,0,714,715,716,717,0,137,203,138,138,84,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,665,666,667,0,108,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,58,0,113,0,743,744,745,746,0,0,232,0,0,137,138, -0,0,0,0,0,0,245,0,0,245,0,0,0,0,0,0,0,0,0,0,693,694,695,696,0,108,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,113,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,320,321,322,0,274,0,0,274,0,0,0,0,0,0,0,0,0,0,722,723,724,725,0,108,0,0,0,0,0,0,0,0,0,140,141,141,141,141,141,141,141,142,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,349,350,351,0,303,0,0,303,0,0,0,0,0,0,0,0,0,0,751,752,753,754,0,137,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,378,379,380,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,320,321,322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,349,350,351,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,294,0,0,0,0,0,0,0,0,0,0,0,294,294,294,294,294,294,294,294,0,108,378,379,380,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,320,321,322,0,0, -0,0,0,0,294,294,0,0,0,0,0,0,0,0,0,0,0,0,294,294,294,294,294,294,294,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,349,350,351,0,0, -0,0,0,0,294,294,245,0,0,245,0,0,0,0,0,0,0,0,0,0,0,294,294,294,0,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,378,379,380,0,0, -0,0,0,294,294,294,274,0,0,274,20,21,320,321,322,0,0,0,0,0,0,0,294,0,0,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,294,294,294,303,0,0,303,49,50,349,350,351,0,0,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,320,321,322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,378,379,380,0,79,80,81,0,0,0,0,0,0,0,137,138,138,138,138,138,84,0,349,350,351,0,0,0,0,0,0,0,20,21,0,0,0,0,0,0,0,0,0,0, -320,321,322,0,0,0,0,0,0,0,0,0,0,306,249,249,108,0,140,80,81,0,0,0,0,0,0,0,0,0,0,0,108,0,378,379,380,0,0,0,0,0,0,0,49,50,0,0,0,0,22,23,0,0,0,0, -349,350,351,0,0,0,0,0,0,0,0,0,0,0,0,0,137,138,84,0,110,249,249,249,249,249,249,249,250,249,251,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,52,0,0,0,0, -378,379,380,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,138,139,0,0,0,0,0,0,0,0,0,280,0,137,138,138,138,138,138,84,0,0,0,174,174,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,280,635,636,637,638,0,0,0,137,83,138,138,203,203,138,138,138,84,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,320,321,322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,280,664,665,666,667,0,0,0,0,0,0,0,232,232,0,0,0,137,138,84,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,349,350,351,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,306,693,694,695,696,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,84,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,378,379,380,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,0,0,0,722,723,724,725,0,0,12,13,0,0,0,0,0,294,0,0,0,0,0,137,138,138,138,84,0, -0,0,0,0,0,0,0,0,0,294,294,0,0,0,0,0,0,0,0,0,294,0,0,0,0,294,0,0,0,0,0,751,752,753,754,0,0,41,42,0,0,0,0,0,294,294,0,0,0,0,29,0,0,0,137,138, -0,0,0,0,0,0,0,0,0,294,294,56,0,0,0,0,0,0,294,294,294,0,0,0,0,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,294,0,0,0,0,58,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,294,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,294,294,0,0,0,0,0,0,252,253,253,0,28,0,253,253,254,0,0,294,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,320,321,322,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,294,294,0,0,0,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,349,350,351,56,294,0,0,0,0,0,0,0,0,0,0,0,0,0,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,378,379,380,294,294,0,0,320,321,322,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,339,340,340,340,340,340,340,340,341,0,0,0,0,0,0,0,320,321,322,0,0,0,0, -294,0,0,0,0,0,0,0,0,0,0,0,0,0,349,350,351,0,0,294,294,294,294,294,294,294,323,324,325,323,324,325,323,324,325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,349,350,351,0,0,0,0, -294,0,0,0,0,0,0,0,0,0,0,0,0,0,378,379,380,0,0,0,294,294,294,294,0,0,352,353,354,352,353,354,352,353,354,0,0,0,0,0,0,0,0,0,0,0,0,0,0,378,379,380,0,0,0,0, -294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,381,382,383,381,382,383,381,382,383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +295,295,294,294,0,0,0,0,0,0,294,294,295,295,294,0,0,108,0,0,0,0,0,0,0,0,137,138,138,138,138,84,0,0,82,138,138,138,138,138,138,138,138,138,138,138,84,0,320,321,322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,0,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +294,295,294,0,0,320,321,322,0,0,0,294,295,294,0,0,0,137,138,138,138,138,84,0,0,0,0,0,0,0,0,108,0,0,110,0,0,0,0,0,0,0,0,0,0,0,113,0,349,350,351,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,50,0,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +294,0,0,0,0,349,350,351,0,0,0,0,294,0,660,661,662,663,0,0,0,0,137,84,0,0,0,0,0,0,0,137,138,138,139,0,0,0,0,0,0,0,0,0,0,0,137,84,378,379,380,0,57,0,0,0,0,0,0,0,0,0,0,0,0,320,321,322,0,0,0,82,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +294,0,0,0,0,378,379,380,22,23,0,0,0,0,689,690,691,692,0,0,0,0,0,137,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,174,0,0,0,0,113,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,349,350,351,0,0,82,139,0,0,0,0,0,323,324,325,0,0,0,0,0,0,0,28,0,323,324,325,0,0,0,0,0,0,0,0, +0,656,657,658,659,0,0,0,51,52,0,0,0,0,718,719,720,721,0,323,324,325,0,0,137,84,0,0,320,321,322,0,0,0,0,0,0,0,0,82,83,83,203,84,0,0,0,113,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,378,379,380,0,259,260,261,0,0,0,0,0,352,353,354,0,0,0,635,636,637,638,57,0,352,353,354,0,0,0,0,0,0,0,0, +0,685,686,687,688,0,0,0,0,0,0,0,0,0,747,748,749,750,0,352,353,354,0,0,0,137,84,0,349,350,351,0,0,0,0,0,0,0,0,111,0,0,232,113,0,0,0,137,84,0,0,0,0,320,321,322,0,0,0,0,0,0,0,0,0,0,0,0,0,82,139,0,0,0,0,0,0,381,382,383,0,245,0,664,665,666,667,0,0,381,382,383,0,0,0,0,0,0,0,0, +0,714,715,716,717,245,24,25,0,246,0,24,25,245,0,0,0,0,0,381,382,383,0,0,0,0,108,0,378,379,380,0,0,0,0,82,83,83,83,139,0,0,0,113,0,0,0,0,137,84,0,0,0,349,350,351,0,0,0,0,0,0,0,0,0,0,0,0,82,139,0,0,0,0,0,0,0,0,0,0,0,274,0,693,694,695,696,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,743,744,745,746,274,53,54,0,275,0,53,54,274,0,0,0,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,113,0,656,657,658,659,108,0,0,0,378,379,380,0,0,0,0,0,0,0,0,0,0,82,138,139,0,0,0,0,0,0,0,0,0,0,0,0,303,0,722,723,724,725,0,0,0,0,0,635,636,637,638,0,245,0,0, +0,0,29,0,0,303,0,0,0,304,0,0,0,303,0,0,0,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,113,0,685,686,687,688,137,84,174,0,0,0,0,0,0,0,0,0,0,0,0,0,82,139,111,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,751,752,753,754,0,0,0,0,0,664,665,666,667,0,274,0,0, +0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,635,636,637,638,0,79,142,0,0,0,0,0,0,0,0,111,0,0,0,0,0,29,0,113,0,714,715,716,717,0,137,203,138,138,84,0,0,0,0,0,0,0,82,138,138,139,0,140,81,0,47,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,25,0,0,693,694,695,696,0,303,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,665,666,667,0,108,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,58,0,113,0,743,744,745,746,0,0,232,0,0,137,138,138,138,138,138,138,138,139,0,0,0,0,0,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,54,0,0,722,723,724,725,0,0,0,0, +0,0,0,0,0,0,245,0,0,245,0,0,0,0,0,0,0,0,0,0,693,694,695,696,0,108,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,0,0,635,636,637,638,0,0,0,245,0,0,0,0,245,0,751,752,753,754,0,0,0,0, +0,0,320,321,322,0,274,0,0,274,0,0,0,0,0,0,0,0,0,0,722,723,724,725,0,108,0,0,0,0,0,0,0,0,0,140,141,141,141,141,141,141,141,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,320,321,322,0,0,0,111,0,0,323,324,325,0,0,0,0,664,665,666,667,0,0,0,274,0,323,324,325,274,0,0,0,0,0,0,0,0,0, +0,0,349,350,351,0,303,0,0,303,0,0,0,0,0,0,0,0,0,0,751,752,753,754,0,137,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,349,350,351,0,0,0,111,0,0,352,353,354,0,0,0,0,693,694,695,696,0,0,0,303,0,352,353,354,303,0,0,0,0,0,0,0,0,0, +0,0,378,379,380,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,320,321,322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,378,379,380,0,0,0,111,0,0,381,382,383,0,0,0,0,722,723,724,725,0,0,0,0,0,381,382,383,0,0,0,0,0,0,323,324,325,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,349,350,351,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,0,0,751,752,753,754,0,0,0,0,0,22,23,0,29,0,0,0,0,0,352,353,354,0, +0,0,0,0,0,294,0,0,0,0,0,0,0,0,0,0,0,294,294,294,294,294,294,294,294,0,108,378,379,380,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,320,321,322,0,0,0,0,0,0,0,0,0,0,0,0,0,82,139,0,0,0,0,0,0,0,0,0,0,0,0,0,24,25,0,0,0,51,52,0,58,0,0,0,0,0,381,382,383,0, +0,0,0,0,294,294,0,0,0,0,0,0,0,0,0,0,0,0,294,294,294,294,294,294,294,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,349,350,351,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,0,660,661,662,663,0,28,0,0,0,0,0,53,54,0,0,0,0,0,0,0,0,0,656,657,658,659,0,0,0, +0,0,0,0,294,294,245,0,0,245,0,0,0,0,0,0,0,0,0,0,0,294,294,294,0,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,378,379,380,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,0,689,690,691,692,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,685,686,687,688,0,0,0, +0,0,0,294,294,294,274,0,0,274,20,21,320,321,322,0,0,0,0,0,0,0,294,0,0,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,139,0,0,0,718,719,720,721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,714,715,716,717,0,0,0, +0,0,0,0,0,0,303,0,0,303,49,50,349,350,351,0,0,0,0,0,0,0,0,0,0,0,108,0,0,0,0,0,0,0,320,321,322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,0,0,747,748,749,750,0,0,245,0,0,0,0,0,0,0,0,0,0,0,0,24,25,0,743,744,745,746,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,378,379,380,0,79,80,81,0,0,0,0,0,0,0,137,138,138,138,138,138,84,0,349,350,351,0,0,0,0,0,0,0,20,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,139,0,0,0,0,0,0,0,0,0,0,274,0,0,0,0,0,0,0,0,0,0,0,0,53,54,0,0,0,0,0,0,0,0, +320,321,322,0,0,0,0,0,0,0,0,0,0,306,249,249,108,0,140,80,81,0,0,0,0,0,0,0,0,0,0,0,108,0,378,379,380,0,0,0,0,0,0,0,49,50,0,0,0,0,22,23,0,0,0,0,0,0,0,0,0,0,0,0,0,111,0,0,0,0,0,0,0,0,0,0,0,303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +349,350,351,0,0,0,0,0,0,0,0,0,0,0,0,0,137,138,84,0,110,249,249,249,249,249,249,249,250,249,251,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,52,0,0,0,0,0,0,0,0,320,321,322,0,82,139,0,0,0,0,0,0,323,324,325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +378,379,380,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,138,139,0,0,0,0,0,0,0,0,0,280,0,137,138,138,138,138,138,84,0,0,0,174,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,349,350,351,0,111,0,0,0,0,0,0,0,352,353,354,0,0,0,0,0,0,0,0,0,323,324,325,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,280,635,636,637,638,0,0,0,137,83,138,138,203,203,138,138,138,84,0,0,0,0,0,0,0,0,0,0,0,0,378,379,380,82,139,0,0,0,0,0,0,0,381,382,383,0,0,255,256,257,258,0,0,0,352,353,354,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,320,321,322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,280,664,665,666,667,0,0,0,0,0,0,0,232,232,0,0,0,137,138,84,0,0,0,0,0,0,0,0,0,0,0,0,82,139,0,0,0,0,0,0,0,0,0,0,0,0,0,284,285,286,287,0,0,0,381,382,383,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,349,350,351,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,306,693,694,695,696,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,84,0,0,0,0,0,0,0,0,0,82,138,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,284,285,286,287,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,378,379,380,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,0,0,0,722,723,724,725,0,0,12,13,0,0,0,0,0,294,0,0,0,0,0,137,138,138,138,84,0,0,0,82,138,139,0,280,0,0,0,0,0,0,0,0,0,0,0,0,0,0,284,285,286,287,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19, +0,0,0,0,0,0,0,0,0,294,294,0,0,0,0,0,0,0,0,0,294,0,0,0,0,294,0,0,0,0,0,751,752,753,754,0,0,41,42,0,0,0,0,0,294,294,0,0,0,0,29,0,0,0,137,138,138,138,139,0,0,0,280,0,0,0,0,0,0,0,0,0,0,0,0,0,0,284,285,286,287,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,48, +0,0,0,0,0,0,0,0,0,294,294,56,0,0,0,0,0,0,294,294,294,0,0,0,0,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,294,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0,0,280,0,0,0,0,0,0,0,0,0,0,0,0,0,0,284,285,286,287,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,294,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,294,294,0,0,0,0,0,0,252,253,253,0,28,0,253,253,254,0,0,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,284,285,286,287,0,0,0,0,0,0,0,0,0,12,13,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,320,321,322,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,294,294,0,0,0,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,314,315,316,0,0,0,656,657,658,659,0,0,41,42,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,349,350,351,56,294,0,0,0,0,0,0,0,0,0,0,0,0,0,294,294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,342,343,344,345,0,0,0,685,686,687,688,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,378,379,380,294,294,0,0,320,321,322,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,339,340,340,340,340,340,340,340,341,0,0,0,0,0,0,0,320,321,322,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,714,715,716,717,0,0,0,0,0,0,0,0,0,0,0,0, +294,0,0,0,0,0,0,0,0,0,0,0,0,0,349,350,351,0,0,294,294,294,294,294,294,294,323,324,325,323,324,325,323,324,325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,349,350,351,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,13,0,0,0,0,0,0,0,0,28,0,743,744,745,746,0,0,0,0,0,0,0,0,0,0,0,0, +294,0,0,0,0,0,0,0,0,0,0,0,0,0,378,379,380,0,0,0,294,294,294,294,0,0,352,353,354,352,353,354,352,353,354,0,0,0,0,0,0,0,0,0,0,0,0,0,0,378,379,380,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,42,0,0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,381,382,383,381,382,383,381,382,383,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/assets-cg/maps/tileset.tsx b/assets-cg/maps/tileset.tsx index 252742c..6bb32b5 100644 --- a/assets-cg/maps/tileset.tsx +++ b/assets-cg/maps/tileset.tsx @@ -27,6 +27,7 @@ + @@ -78,6 +79,8 @@ + + @@ -97,6 +100,8 @@ + + diff --git a/assets-cg/tileset.png b/assets-cg/tileset.png index 56590b9..59fbd7e 100644 Binary files a/assets-cg/tileset.png and b/assets-cg/tileset.png differ diff --git a/include/camera.h b/include/camera.h new file mode 100644 index 0000000..9ee6b48 --- /dev/null +++ b/include/camera.h @@ -0,0 +1,5 @@ +#pragma once + +struct Camera { + int x, y; +}; \ No newline at end of file diff --git a/include/define.h b/include/define.h index 5566afa..ed752a5 100644 --- a/include/define.h +++ b/include/define.h @@ -4,3 +4,5 @@ #define PLAYER_VIEW_Y 8 /*the width of the tileset*/ #define TILESET_WIDTH 29 + +#define TILE_SIZE 16 \ No newline at end of file diff --git a/include/engine.h b/include/engine.h index 43a81da..aeb56dd 100644 --- a/include/engine.h +++ b/include/engine.h @@ -9,6 +9,8 @@ struct Game { struct Player *player; /*list of all the characters on the map*/ struct Character **characters; + /*the camera*/ + struct Camera *camera; /*the background color*/ int background; }; @@ -16,7 +18,7 @@ struct Game { /*draw the current state of the game*/ void engine_draw(struct Game const *game); /*draw the map around the player*/ -void engine_draw_map_around_player(struct Game const *game); +void engine_draw_map(struct Game const *game); /*draw the player*/ void engine_draw_player(struct Player const *player); /*move the player to the direction*/ @@ -29,3 +31,4 @@ void engine_set_background(struct Game *game, int color); void engine_action(struct Game const *game, int action); /*check the current position of the player. To perform action depends of his location*/ void engine_check_position(struct Game *game); +void vec_lerp(struct Camera *from, struct Player const *to, float scale); \ No newline at end of file diff --git a/include/map.h b/include/map.h index 9af5973..7149aca 100644 --- a/include/map.h +++ b/include/map.h @@ -5,7 +5,7 @@ struct Map { /*width, height and the number of layer of the map (max 2)*/ - int w, h, nb_layer; + int w, h, nb_layers; /*the tileset to use*/ bopti_image_t *tileset; /*state of each tile on the map (solid, air ...)*/ diff --git a/include/player.h b/include/player.h index 1954640..1f91275 100644 --- a/include/player.h +++ b/include/player.h @@ -4,8 +4,10 @@ #include "engine.h" struct Player { - /*current position of the player on the map*/ + /*current position of the player on the map - Tile*/ int x, y; + /*player mid - offset pixels*/ + int x_mid, y_mid; /*the direction the player facing to*/ int direction; /*current frame of the animation*/ diff --git a/src/engine.c b/src/engine.c index 966b968..af0b117 100644 --- a/src/engine.c +++ b/src/engine.c @@ -7,11 +7,13 @@ #include "animation.h" #include "define.h" #include "character.h" +#include "camera.h" /*draw the current state of the game*/ void engine_draw(struct Game const *game) { dclear(game->background); - engine_draw_map_around_player(game); + //engine_draw_map_around_player(game); + engine_draw_map(game); engine_draw_player(game->player); } @@ -69,7 +71,7 @@ void engine_draw_map_around_player(struct Game const *game) { for(int i = beginmap; i <= endmap; i++) { int y = j + (posy-ycentre); - for(int layer = 0; layer < game->map->nb_layer; layer++) { + for(int layer = 0; layer < game->map->nb_layers; layer++) { int tile = game->map->layers[layer][i]-1; if(tile != -1) { int tile_x = tile % TILESET_WIDTH; @@ -88,6 +90,40 @@ void engine_draw_map_around_player(struct Game const *game) { } } +void engine_draw_map(struct Game const *game) { + int x_offset = (game->camera->x - DWIDTH/2); + int y_offset = (game->camera->y - DHEIGHT/2); + + //currently -1 to avoid white during transition + for (int layer = 0 ; layer < game->map->nb_layers; layer++) { + for (int y = -1 ; y <= DHEIGHT / TILE_SIZE + 1; y++) { + for (int x = -1 ; x <= DWIDTH / TILE_SIZE + 1; x++) { + unsigned int tile_id = 0; + if(game->map->w > x && game->map->h > y) { + //detect if the map is oob + int indexY = (y + y_offset / TILE_SIZE); + int indexX = (x + x_offset / TILE_SIZE); + if(indexX >= 0 && indexX < game->map->w + && indexY >= 0 && indexY < game->map->h) + tile_id = game->map->layers[layer][indexX + indexY * game->map->w]; + } + + if (tile_id != 0) { + tile_id--; + unsigned int tile_x = TILE_SIZE * (tile_id % TILESET_WIDTH); + unsigned int tile_y = TILE_SIZE * (tile_id / TILESET_WIDTH); + + //provisoire le temps de trouver une manière propre + dsubimage(x * TILE_SIZE - x_offset%TILE_SIZE - game->player->anim.dx * 3, + y * TILE_SIZE - y_offset%TILE_SIZE - game->player->anim.dy * 3, game->map->tileset, + tile_x, tile_y, TILE_SIZE, TILE_SIZE, DIMAGE_NONE); + } + } + } + } + +} + /*draw the player*/ void engine_draw_player(struct Player const *player) { dframe(player->show_x * 16, player->show_y * 16 - 5, player->anim.img); //draw the player 5 pixel up @@ -105,6 +141,10 @@ int engine_move(struct Game *game, int direction) { if(map_walkable(game->map, game->player->x + dx, game->player->y + dy)) { game->player->x += dx; game->player->y += dy; + + game->camera->x += dx*16; + game->camera->y += dy*16; + game->player->idle = !anim_player_walking(&game->player->anim, 1); engine_check_position(game); } else { @@ -120,7 +160,7 @@ int engine_move(struct Game *game, int direction) { /*update the player animation*/ void engine_tick(struct Game *game, int dt) { game->player->anim.duration -= dt; - + vec_lerp(game->camera, game->player, 0.05); if(game->player->anim.duration <= 0) { game->player->idle = !game->player->anim.function(&game->player->anim, 0); } @@ -152,3 +192,8 @@ void engine_check_position(struct Game *game) { engine_set_background(game, C_WHITE); } } + +void vec_lerp(struct Camera *from, struct Player const *to, float scale) { + from->x = from->x * (1 - scale) + (to->x*TILE_SIZE + to->x_mid) * scale; + from->y = from->y * (1 - scale) + (to->y*TILE_SIZE + to->y_mid) * scale; +} \ No newline at end of file diff --git a/src/main.c b/src/main.c index 5c48aa9..9b63d8c 100644 --- a/src/main.c +++ b/src/main.c @@ -6,6 +6,8 @@ #include "player.h" #include "animation.h" #include "character.h" +#include "camera.h" +#include "define.h" #include #include @@ -26,6 +28,8 @@ int main(void) { struct Player player = { .x = 32, .y = 30, + .x_mid = 7, + .y_mid = 2, .show_x = 12, .show_y = 7, .direction = DIR_DOWN, @@ -34,9 +38,15 @@ int main(void) { }; player.idle = !anim_player_idle(&player.anim, 1); + struct Camera camera = { + .x = player.x * TILE_SIZE + player.x_mid, + .y = player.y * TILE_SIZE + player.y_mid + }; + struct Game game = { .map = maps[0], .player = &player, + .camera = &camera, .background = C_WHITE }; game.characters = get_map_characters(1);