diff --git a/data/map/01.map b/data/map/01.map index d475932..abc062a 100644 --- a/data/map/01.map +++ b/data/map/01.map @@ -4,8 +4,8 @@ bg_img=bg_surface.png room_up=0 room_down=0 room_left=0 -room_right=0 +room_right=02.map [tilemap] -01_8.tmx +01.tmx [tilemap-end] \ No newline at end of file diff --git a/data/map/01.tmx b/data/map/01.tmx index 1dee63d..f0873bb 100644 --- a/data/map/01.tmx +++ b/data/map/01.tmx @@ -1,21 +1,34 @@ - - - + + + -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,68,68,0,0,0,0,0,65,65,0,0,0,0,0,0,0, -0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,65,65,0,0,0,68,0,0,0,0,68,68,0,0,0,0, -0,0,0,0,0,0,0,31,0,0,0,0,0,49,0,0,0,0,0,0, -0,49,0,0,0,0,0,47,0,0,0,0,68,68,68,68,0,0,0,0, -68,68,68,68,68,68,68,68,68,68,68,68,68,69,78,68,68,68,68,68 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,259,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,259,0,0,0, +0,0,0,0,0,0,0,263,264,0,0,0,0,0,0,0,0,257,258,0,0,0,0,0,0,0,0,0,263,264,0,0,0,0,0,0,259,0,0,0, +0,0,0,0,0,0,0,295,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265,266,0,0,0,0,0,0,259,0,0,0, +0,263,264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,259,0,0,0, +0,295,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, +0,0,0,0,239,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,265,266,0,0,0,259,0,0,259,0,0,0, +0,0,0,257,258,257,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, +0,0,0,289,290,289,290,0,0,0,0,577,578,579,580,581,582,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,0,0,0,0,0,0,0, +263,264,0,0,0,0,0,193,194,0,0,0,0,0,0,0,0,0,0,0,0,0,281,282,277,278,279,280,0,0,0,0,0,0,0,0,0,0,0,0, +295,296,0,0,0,0,0,225,226,0,0,0,0,0,0,0,0,281,275,275,275,275,313,314,309,310,311,312,0,0,0,0,0,0,0,0,0,0,0,0, +265,264,263,264,263,264,263,264,263,0,263,264,263,264,263,264,263,264,263,266,266,266,283,284,266,265,266,264,263,264,263,264,263,264,263,264,263,264,263,264, +295,296,295,296,295,296,295,296,295,0,295,296,295,296,295,296,295,296,295,296,295,296,315,316,298,297,298,296,295,296,295,296,295,296,295,296,295,296,295,296 diff --git a/data/map/01_8.tmx b/data/map/01_8.tmx deleted file mode 100644 index e40b3f3..0000000 --- a/data/map/01_8.tmx +++ /dev/null @@ -1,34 +0,0 @@ - - - - - -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,159,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,259,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,259,0,0,0, -0,0,0,0,0,0,0,263,264,0,0,0,0,0,0,0,0,257,258,0,0,0,0,0,0,0,0,0,263,264,0,0,0,0,0,0,259,0,0,0, -0,0,0,0,0,0,0,295,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265,266,0,0,0,0,0,0,259,0,0,0, -0,263,264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,259,0,0,0, -0,295,296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, -0,0,0,0,239,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,265,266,0,0,0,259,0,0,259,0,0,0, -0,0,0,257,258,257,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, -0,0,0,289,290,289,290,0,0,0,0,577,578,579,580,581,582,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,259,0,0,259,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,0,0,0,0,0,0,0, -263,264,0,0,0,0,0,193,194,0,0,0,0,0,0,0,0,0,0,0,0,0,281,282,277,278,279,280,0,0,0,0,0,0,0,0,0,0,0,0, -295,296,0,0,0,0,0,225,226,0,0,0,0,0,0,0,0,281,275,275,275,275,313,314,309,310,311,312,0,0,0,0,0,0,0,0,0,0,0,0, -265,264,263,264,263,264,263,264,263,0,263,264,263,264,263,264,263,264,263,266,266,266,283,284,266,265,266,264,263,264,263,264,263,264,263,264,263,264,263,264, -295,296,295,296,295,296,295,296,295,0,295,296,295,296,295,296,295,296,295,296,295,296,315,316,298,297,298,296,295,296,295,296,295,296,295,296,295,296,295,296 - - - diff --git a/data/map/02.map b/data/map/02.map new file mode 100644 index 0000000..9d2b128 --- /dev/null +++ b/data/map/02.map @@ -0,0 +1,11 @@ +tileset_img=tiles_surface.png +bg_img=bg_surface.png + +room_up=0 +room_down=03.map +room_left=01.map +room_right=0 + +[tilemap] +02.tmx +[tilemap-end] \ No newline at end of file diff --git a/data/map/02.tmx b/data/map/02.tmx new file mode 100644 index 0000000..0f00ee9 --- /dev/null +++ b/data/map/02.tmx @@ -0,0 +1,34 @@ + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,266,266,266,266,266,266,266,266,266,266,266,266,266,266,0,0,297,297,0,297,297,0,297,297,0,297,297,0,297,297,0,297,297,0,297,297,0,0, +0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,265,265,265,265,265,265,265,265,265,265,265,265,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,265,265,265,265,265,265,265,265,265,265,265,265,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,265,265,265,265,265,265,265,265,265,265,265,265,265,0,0,297,297,0,297,297,0,297,297,0,297,297,0,297,297,0,297,297,0,297,297,0,0, +0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,265,265,265,265,265,265,265,265,265,265,265,265,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,265,265,265,265,265,265,265,265,265,265,265,265,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,266,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,265,265,265,265,265,265,265,265,265,265,265,265,265,265,0,0,297,297,0,297,297,0,297,297,0,297,297,0,297,297,0,297,297,0,297,297,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,264,264,264,264,264,0,0,0,0,264,264,264,264,264,264,264,264,264,264, +295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,296,296,296,296,296,0,0,0,0,296,296,296,296,296,296,296,296,296,296 + + + diff --git a/data/map/03.map b/data/map/03.map new file mode 100644 index 0000000..68cbb57 --- /dev/null +++ b/data/map/03.map @@ -0,0 +1,11 @@ +tileset_img=tiles_surface.png +bg_img=bg_surface.png + +room_up=02.map +room_down=0 +room_left=0 +room_right=0 + +[tilemap] +03.tmx +[tilemap-end] \ No newline at end of file diff --git a/data/map/03.tmx b/data/map/03.tmx new file mode 100644 index 0000000..ff9527f --- /dev/null +++ b/data/map/03.tmx @@ -0,0 +1,34 @@ + + + + + +265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,0,0,0,0,265,265,265,265,265,265,265,265,265,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,577,578,579,580,581,582,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,190,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,190,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,257,257,257,257,258,257,258,258,258,257,257,257,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,265, +265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265 + + + diff --git a/data/map/tiles_surface.tsx b/data/map/surface.tsx similarity index 65% rename from data/map/tiles_surface.tsx rename to data/map/surface.tsx index 41c3a9f..77ef15e 100644 --- a/data/map/tiles_surface.tsx +++ b/data/map/surface.tsx @@ -1,4 +1,4 @@ - + diff --git a/data/map/surface.world b/data/map/surface.world new file mode 100644 index 0000000..aaaff88 --- /dev/null +++ b/data/map/surface.world @@ -0,0 +1,27 @@ +{ + "maps": [ + { + "fileName": "02.tmx", + "height": 208, + "width": 320, + "x": 256, + "y": 0 + }, + { + "fileName": "01.tmx", + "height": 208, + "width": 320, + "x": -64, + "y": 0 + }, + { + "fileName": "03.tmx", + "height": 208, + "width": 320, + "x": 256, + "y": 208 + } + ], + "onlyShowAdjacentMaps": false, + "type": "world" +} diff --git a/source/game.cpp b/source/game.cpp index 7567210..df6dbbb 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -10,7 +10,7 @@ Game::Game(SDL_Renderer *renderer, Asset *asset, Screen *screen, Input *input) this->input = input; eventHandler = new SDL_Event(); - map = new Map(asset->get("01.map"), renderer, asset); + map = new Map(asset->get("02.map"), renderer, asset); player = new Player(renderer, asset, input, map); debugText = new Text(asset->get("debug.png"), asset->get("debug.txt"), renderer); } @@ -75,6 +75,7 @@ void Game::update() } player->update(); + checkScreenBorders(); checkInput(); } } @@ -105,6 +106,8 @@ void Game::checkInput() if (input->checkInput(INPUT_BUTTON_3, REPEAT_FALSE)) { + delete map; + map = new Map(asset->get("01.map"),renderer, asset); delete player; player = new Player(renderer, asset, input, map); } @@ -156,4 +159,40 @@ void Game::renderDebugInfo() text = "state " + std::to_string(player->state); debugText->write(0, line += 6, text, -1); + + text = map->getRoomFileName(b_top) + " " +map->getRoomFileName(b_right) + " " +map->getRoomFileName(b_bottom) + " " +map->getRoomFileName(b_left); + debugText->write(0, line += 6, text, -1); +} + +// Cambia el mapa +bool Game::changeMap(std::string file) +{ + bool success = false; + // En las habitaciones los limites tienen la cadena del fichero o un 0 en caso de no limitar con nada + if (file != "0") + // Verifica que exista el fichero que se va a cargar + if (asset->get(file) != "") + { + // Elimina la habitación actual + delete map; + + // Crea un objeto habitación nuevo a partir del fichero + map = new Map(asset->get(file), renderer, asset); + success = true; + } + + return success; +} + +// Comprueba si el jugador está en el borde y se ha de cambiar el mapa +void Game::checkScreenBorders() +{ + if (player->isOnScreenBorder()) + { + if (changeMap(map->getRoomFileName(player->getBorder()))) + { + player->setMap(map); + player->switchBorders(); + } + } } \ No newline at end of file diff --git a/source/game.h b/source/game.h index 27a428d..6f8b74d 100644 --- a/source/game.h +++ b/source/game.h @@ -42,6 +42,12 @@ private: // Muestra información de depuración void renderDebugInfo(); + // Cambia el mapa + bool changeMap(std::string file); + + // Comprueba si el jugador está en el borde y se ha de cambiar el mapa + void checkScreenBorders(); + public: // Constructor Game(SDL_Renderer *renderer, Asset *asset, Screen *screen, Input *input); diff --git a/source/map.cpp b/source/map.cpp index 951a9b7..5fe682c 100644 --- a/source/map.cpp +++ b/source/map.cpp @@ -8,7 +8,7 @@ Map::Map(std::string file, SDL_Renderer *renderer, Asset *asset) map_width = 40; map_height = 26; tileset_width = 32; - + // Copia los punteros a objetos this->asset = asset; this->renderer = renderer; @@ -223,9 +223,11 @@ void Map::render() } // Devuelve el tipo de tile que hay en un punto -t_tile_map Map::getTile(SDL_Point p) +e_tile_map Map::getTile(SDL_Point p) { - const int tile = tilemap[((p.y / tile_size) * map_width) + (p.x / tile_size)]; + const int x = std::max(getPlayArea(b_left), (std::min(p.x, getPlayArea(b_right)))); + const int y = std::max(getPlayArea(b_top), (std::min(p.y, getPlayArea(b_bottom)))); + const int tile = tilemap[((y / tile_size) * map_width) + (x / tile_size)]; const int png_width = 32; if (tile >= 0 && tile < 8 * png_width) @@ -240,6 +242,8 @@ t_tile_map Map::getTile(SDL_Point p) { return passable; } + + return nothing; } // Devuelve el valor de la variable @@ -252,4 +256,60 @@ int Map::getTileSize() int Map::getTileIndex(SDL_Point p) { return tilemap[((p.y / tile_size) * map_width) + (p.x / tile_size)]; +} + +// Devuelve el valor de los bordes de la zona de juego +int Map::getPlayArea(e_border border) +{ + switch (border) + { + case b_top: + return 0; + break; + + case b_left: + return 0; + break; + + case b_right: + return tile_size * map_width; + break; + + case b_bottom: + return tile_size * map_height; + break; + + default: + break; + } + + return -1; +} + +// Devuelve el nombre del fichero de la habitación en funcion del borde +std::string Map::getRoomFileName(e_border border) +{ + switch (border) + { + case b_top: + return room_up; + break; + + case b_left: + return room_left; + break; + + case b_right: + return room_right; + break; + + case b_bottom: + return room_down; + break; + + default: + break; + } + + return ""; } \ No newline at end of file diff --git a/source/map.h b/source/map.h index b5c27cb..9b82fdf 100644 --- a/source/map.h +++ b/source/map.h @@ -12,13 +12,22 @@ #ifndef MAP_H #define MAP_H -enum t_tile_map +enum e_tile_map { nothing, wall, passable }; +enum e_border +{ + b_none, + b_top, + b_bottom, + b_left, + b_right +}; + // The player class Map { @@ -64,13 +73,19 @@ public: void render(); // Devuelve el tipo de tile que hay en un punto - t_tile_map getTile(SDL_Point p); + e_tile_map getTile(SDL_Point p); // Devuelve el valor de la variable int getTileSize(); // Devuelve el indice del tile correspondiente a un punto del mapa int getTileIndex(SDL_Point p); + + // Devuelve el valor de los bordes de la zona de juego + int getPlayArea(e_border border); + + // Devuelve el nombre del fichero de la habitación en funcion del borde + std::string getRoomFileName(e_border border); }; #endif diff --git a/source/player.cpp b/source/player.cpp index fb30586..f88baea 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -302,4 +302,74 @@ bool Player::isOnFloor() onFloor |= ((map->getTile(f) == wall) || (map->getTile(f) == passable)); } return onFloor; +} + +// Comprueba si está situado en alguno de los cuatro bordes de la habitación +bool Player::isOnScreenBorder() +{ + bool success = false; + border = b_none; + + if (x < map->getPlayArea(b_left)) + { + border = b_left; + success = true; + } + else if (x > map->getPlayArea(b_right) - w) + { + border = b_right; + success = true; + } + else if (y < map->getPlayArea(b_top)) + { + border = b_top; + success = true; + } + else if (y > map->getPlayArea(b_bottom) - h) + { + border = b_bottom; + success = true; + } + + return success; +} + +// Devuelve el valor de la variable +e_border Player::getBorder() +{ + return border; +} + +// Cambia al jugador de un borde al opuesto. Util para el cambio de pantalla +void Player::switchBorders() +{ + switch (border) + { + case b_top: + y = map->getPlayArea(b_bottom) - h; + break; + + case b_bottom: + y = map->getPlayArea(b_top); + break; + + case b_right: + x = map->getPlayArea(b_left); + break; + + case b_left: + x = map->getPlayArea(b_right) - w; + break; + + default: + break; + } + + border = b_none; +} + +// Pasa la referencia del mapa +void Player::setMap(Map *map) +{ + this->map = map; } \ No newline at end of file diff --git a/source/player.h b/source/player.h index 81505c5..1d0ed52 100644 --- a/source/player.h +++ b/source/player.h @@ -10,7 +10,7 @@ #ifndef PLAYER_H #define PLAYER_H -enum t_player_state +enum e_state { standing, jumping, @@ -40,7 +40,8 @@ public: int lives; // Cantidad de vidas int w; // Ancho del jugador int h; // ALto del jugador - t_player_state state; // Estado actual del jugador + e_state state; // Estado actual del jugador + e_border border; // Indica en qué borde de la pantalla está el jugador SDL_Point lastPosition; // Posición anterior // Variables que afectan a la inercia del movimiento @@ -93,6 +94,18 @@ public: // Dibuja el objeto void render(); + + // Comprueba si está situado en alguno de los cuatro bordes de la habitación + bool isOnScreenBorder(); + + // Devuelve el valor de la variable + e_border getBorder(); + + // Cambia al jugador de un borde al opuesto. Util para el cambio de pantalla + void switchBorders(); + + // Pasa la referencia del mapa + void setMap(Map *map); }; #endif diff --git a/source/prog.cpp b/source/prog.cpp index 87c6426..3a407b0 100644 --- a/source/prog.cpp +++ b/source/prog.cpp @@ -140,7 +140,10 @@ bool Prog::setFileList() // Ficheros binarios asset->add("/data/map/01.map", data); asset->add("/data/map/01.tmx", data); - asset->add("/data/map/01_8.tmx", data); + asset->add("/data/map/02.map", data); + asset->add("/data/map/02.tmx", data); + asset->add("/data/map/03.map", data); + asset->add("/data/map/03.tmx", data); asset->add("/data/config.bin", data, false); asset->add("/data/gamecontrollerdb.txt", data); asset->add("/data/animations/player.ani", data);