diff --git a/DangerousD/Content/Content.mgcb b/DangerousD/Content/Content.mgcb index 0ea387f..6729fe5 100644 --- a/DangerousD/Content/Content.mgcb +++ b/DangerousD/Content/Content.mgcb @@ -10,6 +10,7 @@ #-------------------------------- References --------------------------------# +/reference:references/MonoGame.Extended.Content.Pipeline.dll #---------------------------------- Content ---------------------------------# @@ -83,6 +84,19 @@ /processorParam:TextureFormat=Color /build:menuFon.jpg +#begin MonstersAnimations.png +#begin menuFon.jpg +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:menuFon.jpg + #begin MenuFon2.jpg /importer:TextureImporter /processor:TextureProcessor @@ -107,7 +121,7 @@ /processorParam:TextureFormat=Color /build:menuFon3.jpg -#begin PC_Computer_Dangerous_Dave_In_The_Haunted_Mansion_Death_Sequences.png +#begin tiles.png /importer:TextureImporter /processor:TextureProcessor /processorParam:ColorKeyColor=255,0,255,255 @@ -117,7 +131,7 @@ /processorParam:ResizeToPowerOfTwo=False /processorParam:MakeSquare=False /processorParam:TextureFormat=Color -/build:PC_Computer_Dangerous_Dave_In_The_Haunted_Mansion_Death_Sequences.png +/build:tiles.png #begin wall.jpg /importer:TextureImporter diff --git a/DangerousD/Content/animations/SilasBallMove b/DangerousD/Content/animations/SilasBallMove new file mode 100644 index 0000000..9a0b5f4 --- /dev/null +++ b/DangerousD/Content/animations/SilasBallMove @@ -0,0 +1 @@ +{"id":"SilasBallMove","textureName":"MonstersAnimations","startSpriteRectangle":{"X":147,"Y":618,"Width":24,"Height":24},"frameSecond":[{"Item1":0,"Item2":8}],"textureFrameInterval":1,"framesCount":2,"isCycle":true,"offset":"0, 0"} diff --git a/DangerousD/Content/lvl.tmx b/DangerousD/Content/lvl.tmx new file mode 100644 index 0000000..8b3a0c2 --- /dev/null +++ b/DangerousD/Content/lvl.tmx @@ -0,0 +1,754 @@ + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,75,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,52, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,0,52,52,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,40,41,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,53,54,0 + + +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,52, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,74,75,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,13,75,0,0,0,0 + + +52,0,0,0,52,0,0,0,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,0,0,52,0,0,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,0,52,0,52,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +52,52,52,52,52,52,52,52,52,0,0,0,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,0,0,0,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,0,0,0,52,52,52,52, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +52,52,52,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,46,0,0,66,67,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,66,67,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,66,67,0, +0,0,0,0,0,0,76,76,76,76,76,76,76,76,76,76, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,51,52,52,52,52,52,52, +76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0, +52,52,52,52,0,0,0,0,0,0,0,0,0,0,0,0, +76,76,76,76,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,149,152,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,150,153,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,151,154,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,149,152,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,150,153,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,151,154,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,149,152,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,79,80,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,92,93,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,105,106,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,149,152,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,150,153,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,151,154,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,149,152,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,149,152,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,150,153,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,151,154,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,149,152,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,150,153,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,151,154,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,150,153,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,151,154,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,150,153,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,151,154,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,149,152,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,150,153,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,151,154,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,149,152,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,150,153,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,151,154,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,147,199,148,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,147,199,148,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,147,199,148,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,147,199,148,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,147,199,148,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,147,199,148,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,147,199,148,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,0,0,0,147,199,148,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +0,0,0,147,199,148,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,147,199,148,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,147,199,148,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,147,199,148,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,147,199,148,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,160,199,161,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +183,184,185,186,199,187,188,189,190,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + + + +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,2,3,4, +29,29,29,29,5,6,29,29,29,29,29,29,14,15,16,17, +29,29,29,29,29,29,29,29,29,29,29,29,27,28,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,2,3,4,29,29,29,23,24,29,29,29,29,29, +29,29,14,15,16,17,29,29,29,29,29,29,29,29,29,29, +29,29,27,28,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,5,6, +29,29,29,23,24,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29 + + +29,29,29,29,29,0,0,0,0,0,0,0,0,0,0,0, +29,29,29,29,29,0,144,144,144,144,144,144,144,144,247,144, +29,29,29,29,0,0,157,157,167,157,157,157,157,157,260,157, +29,29,29,29,0,0,157,157,180,157,254,255,157,157,260,157, +29,29,29,29,0,0,157,157,193,157,267,268,157,157,260,157, +29,29,29,29,0,0,204,204,204,204,280,281,204,272,260,272, +29,29,29,29,0,0,147,199,148,0,0,0,0,0,260,0, +29,29,29,29,0,0,147,199,148,144,144,144,144,144,260,144, +29,29,29,29,0,0,147,199,148,157,157,157,157,157,260,157, +29,29,29,29,0,0,147,199,148,157,157,157,157,157,260,157, +29,29,29,29,0,0,147,199,148,157,157,157,157,157,260,157, +29,29,29,29,0,0,147,199,148,204,272,157,157,157,260,157, +29,29,29,29,0,0,147,199,148,0,0,157,157,157,260,157, +29,29,29,29,0,0,147,199,148,144,144,157,157,157,260,157, +29,29,29,29,0,0,147,199,148,157,157,157,157,157,260,157, +29,29,29,29,0,0,147,199,148,157,157,157,157,157,260,157 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +157,157,157,178,179,157,157,157,157,157,157,157,157,157,157,157, +157,157,157,191,192,157,157,252,253,157,157,157,157,157,157,258, +157,157,157,157,157,157,157,265,266,157,157,157,696,697,157,271, +204,204,204,204,204,204,204,278,279,204,204,204,709,710,204,284, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157, +157,157,157,157,157,157,258,157,157,157,252,253,157,157,157,157, +157,157,157,157,157,157,271,157,157,157,265,266,157,696,697,157, +157,157,272,204,204,204,284,204,204,204,278,279,204,709,710,204, +157,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +157,157,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +157,157,157,157,157,157,157,157,157,157,157,167,157,157,209,210, +157,157,157,157,254,255,157,157,157,157,157,180,157,157,222,223 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +157,157,157,157,243,157,157,157,157,157,157,157,157,157,157,157, +157,157,157,157,256,257,157,157,157,157,157,157,157,157,157,157, +157,157,157,157,269,270,157,157,157,157,217,261,262,263,264,217, +204,204,204,204,282,283,204,204,204,204,230,274,275,276,277,230, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +157,157,157,157,209,210,211,212,157,157,157,167,157,157,157,157, +157,254,255,157,222,223,224,225,157,157,157,180,157,157,157,157, +157,267,268,157,235,236,237,238,157,157,157,193,157,157,157,157, +204,280,281,204,204,204,204,204,204,204,204,204,204,204,204,204, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +211,212,157,157,157,157,157,157,157,157,157,157,157,157,157,157, +224,225,157,157,252,253,157,248,249,157,157,258,157,157,157,157 + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +144,144,144,144,144,144,144,144,621,622,144,144,144,0,0,0, +157,157,157,157,157,157,157,157,634,635,157,157,157,0,0,0, +157,248,249,157,157,157,272,157,647,648,157,272,157,0,0,0, +157,250,251,157,157,157,145,147,199,200,148,145,157,0,0,0, +204,239,240,204,204,204,204,160,199,200,161,204,204,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +144,144,144,144,144,144,144,144,144,144,144,144,144,0,0,0, +178,179,157,157,157,157,157,243,157,157,157,157,157,0,0,0, +191,192,157,157,157,157,157,256,257,157,252,253,157,0,0,0, +157,157,157,157,157,157,157,269,270,157,265,266,157,0,0,0, +204,204,204,204,204,204,204,282,283,204,278,279,204,0,0,0, +0,0,0,147,199,148,0,0,0,0,0,0,0,0,0,0, +144,144,144,147,199,148,144,144,144,144,144,144,144,0,0,0, +157,157,157,147,199,148,157,243,157,157,157,157,157,0,0,0, +254,255,157,147,199,148,157,256,257,157,252,253,157,0,0,0 + + +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,2,3,4,29, +29,29,29,29,29,29,29,29,29,29,29,14,15,16,17,29, +29,29,29,29,29,29,29,29,29,29,29,27,28,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,5,6,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,5, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,19,20,21,22,0,0,29,29,29,29,29,29,29, +29,30,31,32,33,34,35,0,0,29,29,29,29,29,29,29, +29,43,44,45,46,47,48,0,0,29,29,29,29,29,29,29, +64,65,18,58,59,60,18,0,0,29,29,29,29,29,29,29, +77,78,18,71,72,73,18,0,0,68,56,56,55,56,56,69, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +29,29,29,29,0,0,147,199,148,157,157,157,157,157,260,157, +29,29,29,29,0,0,160,200,161,204,204,272,157,157,260,157, +29,29,29,29,0,0,0,0,0,0,0,0,157,157,260,157, +29,29,29,29,0,0,144,144,144,144,144,144,157,157,260,157, +29,29,29,29,0,0,157,167,157,157,157,157,157,157,260,157, +29,29,29,29,0,0,157,180,157,252,253,157,157,157,260,157, +29,29,29,29,0,0,157,193,157,265,266,157,157,157,260,157, +6,29,29,29,0,0,204,204,204,278,279,204,272,157,260,157, +29,29,29,29,0,0,0,0,0,0,0,0,0,157,260,157, +29,29,29,29,0,0,144,144,144,144,144,144,144,157,260,157, +29,29,29,29,0,0,157,157,157,157,157,157,157,219,220,221, +29,29,29,12,0,0,157,157,157,254,255,157,157,232,233,234, +29,29,29,29,26,63,157,157,157,267,268,218,213,214,215,216, +29,29,29,38,39,63,204,204,204,280,281,231,226,227,228,229, +29,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +157,157,157,157,267,268,157,696,697,157,157,193,157,157,235,236, +157,272,204,204,280,281,204,709,710,204,204,204,204,204,204,204, +157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +157,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +157,157,157,178,179,157,157,157,157,157,157,157,157,157,157,157, +157,157,157,191,192,157,248,249,157,157,157,157,157,157,157,157, +157,157,157,157,157,157,250,251,157,217,261,262,263,264,217,157, +272,204,204,204,204,204,239,240,204,230,274,275,276,277,230,204, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +157,157,157,157,157,157,157,157,243,157,157,209,210,211,212,157, +157,252,253,157,157,258,157,157,256,257,157,222,223,224,225,157, +218,265,266,157,157,271,157,157,269,270,157,235,236,237,238,157, +231,278,279,204,204,284,204,204,282,283,204,204,204,204,204,204, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +237,238,157,157,265,266,157,250,251,157,157,271,157,157,157,157, +204,204,204,204,278,279,204,239,240,204,204,284,204,204,204,204, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +157,157,157,157,157,157,157,157,157,243,157,157,209,210,211,212, +157,157,254,255,157,248,249,157,157,256,257,157,222,223,224,225, +157,157,267,268,157,250,251,157,157,269,270,157,235,236,237,238, +204,204,280,281,204,239,240,204,204,282,283,204,204,204,204,204, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +157,157,178,179,157,157,157,157,157,157,157,157,157,157,157,157, +157,157,191,192,157,157,157,157,258,157,157,157,248,249,157,157, +157,157,157,157,157,696,697,157,271,157,157,157,250,251,157,157, +204,204,204,204,204,709,710,204,284,204,204,204,239,240,204,204, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +267,268,157,147,199,148,157,269,270,157,265,266,218,0,0,0, +280,281,204,160,200,161,204,282,283,204,278,279,231,0,0,0, +0,0,0,147,199,148,0,0,0,0,0,0,0,0,0,0, +144,144,144,147,199,148,144,144,144,144,144,144,144,0,0,0, +157,157,157,147,199,148,157,157,157,157,157,157,157,0,0,0, +157,157,157,147,199,148,157,157,157,157,252,253,157,0,0,0, +157,157,157,147,199,148,157,217,157,157,265,266,157,0,0,0, +204,204,204,160,200,161,204,230,204,204,278,279,204,0,0,0, +0,0,0,147,199,148,0,0,0,0,0,0,0,0,0,0, +144,144,144,147,199,148,144,144,144,144,144,144,144,0,0,0, +157,157,159,160,200,161,162,157,157,157,157,157,157,0,0,0, +157,171,172,173,199,174,175,176,157,157,252,253,157,0,0,0, +183,184,185,186,199,187,188,189,190,157,265,266,157,0,0,0, +196,197,198,199,199,200,201,202,203,204,278,279,204,0,0,0, +0,0,0,0,0,0,0,0,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/DangerousD/Content/map.tsx b/DangerousD/Content/map.tsx new file mode 100644 index 0000000..288bb53 --- /dev/null +++ b/DangerousD/Content/map.tsx @@ -0,0 +1,4 @@ + + + + diff --git a/DangerousD/Content/tiles.png b/DangerousD/Content/tiles.png new file mode 100644 index 0000000..3e35587 Binary files /dev/null and b/DangerousD/Content/tiles.png differ diff --git a/DangerousD/Desktop/DangerousD map/map_0.mgcontent b/DangerousD/Desktop/DangerousD map/map_0.mgcontent new file mode 100644 index 0000000..acc2649 --- /dev/null +++ b/DangerousD/Desktop/DangerousD map/map_0.mgcontent @@ -0,0 +1,16 @@ + + + C:/Users/Semejkin_AV/Desktop/DangerousD map/map.tsx + 2023-08-16T13:04:13.796245+03:00 + C:/Users/Semejkin_AV/Documents/Github_repos/DangerousD/DangerousD/Content/bin/DesktopGL/Content/../../../../../Desktop/DangerousD map/map_0.xnb + 2023-08-16T15:38:41.8125207+03:00 + TiledMapTilesetImporter + 2023-07-14T20:14:40+03:00 + TiledMapTilesetProcessor + 2023-07-14T20:14:40+03:00 + + + C:/Users/Semejkin_AV/Documents/Github_repos/DangerousD/DangerousD/Content/bin/DesktopGL/Content/../../../../../Desktop/DangerousD map/tiles_0.xnb + + + \ No newline at end of file diff --git a/DangerousD/Desktop/DangerousD map/tiles_0.mgcontent b/DangerousD/Desktop/DangerousD map/tiles_0.mgcontent new file mode 100644 index 0000000..4cfff75 --- /dev/null +++ b/DangerousD/Desktop/DangerousD map/tiles_0.mgcontent @@ -0,0 +1,22 @@ + + + C:/Users/Semejkin_AV/Desktop/DangerousD map/tiles.BMP + 2023-08-16T12:47:16.3453923+03:00 + C:/Users/Semejkin_AV/Documents/Github_repos/DangerousD/DangerousD/Content/bin/DesktopGL/Content/../../../../../Desktop/DangerousD map/tiles_0.xnb + 2023-08-16T15:38:41.7865192+03:00 + TextureImporter + 2022-07-26T14:44:56+03:00 + TextureProcessor + 2022-07-26T14:44:56+03:00 + + ColorKeyColor + 0,0,0,0 + + + ColorKeyEnabled + True + + + + + \ No newline at end of file diff --git a/DangerousD/GameCore/GUI/AbstractGui.cs b/DangerousD/GameCore/GUI/AbstractGui.cs index 24af331..7f7b212 100644 --- a/DangerousD/GameCore/GUI/AbstractGui.cs +++ b/DangerousD/GameCore/GUI/AbstractGui.cs @@ -17,9 +17,9 @@ public abstract class AbstractGui : IDrawableObject protected abstract void CreateUI(); private GraphicsDevice graphicsDevice; - public virtual void Initialize(GraphicsDevice graphicsDevice) + public virtual void Initialize() { - Manager.Initialize(graphicsDevice); + Manager.Initialize(AppManager.Instance.GraphicsDevice); this.graphicsDevice = graphicsDevice; CreateUI(); } diff --git a/DangerousD/GameCore/GameObjects/Entities/SilasBall.cs b/DangerousD/GameCore/GameObjects/Entities/SilasBall.cs new file mode 100644 index 0000000..b14d8af --- /dev/null +++ b/DangerousD/GameCore/GameObjects/Entities/SilasBall.cs @@ -0,0 +1,36 @@ +using DangerousD.GameCore.Graphics; +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DangerousD.GameCore.GameObjects.Entities +{ + public class SilasBall : LivingEntity + { + public SilasBall(Vector2 position) : base(position) + { + Height = 60; + Width = 60; + acceleration = Vector2.Zero; + + } + public SilasBall(Vector2 position, Vector2 velosity) : base(position) + { + Height = 60; + Width = 60; + acceleration = Vector2.Zero; + velocity = velosity; + + } + + protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "SilasBallMove" }, "SilasBallMove"); + public override void Update(GameTime gameTime) + { + base.Update(gameTime); + + } + } +} diff --git a/DangerousD/GameCore/GameObjects/Entity.cs b/DangerousD/GameCore/GameObjects/Entity.cs index cf2caa9..8876e2c 100644 --- a/DangerousD/GameCore/GameObjects/Entity.cs +++ b/DangerousD/GameCore/GameObjects/Entity.cs @@ -7,12 +7,9 @@ using Microsoft.Xna.Framework.Graphics; namespace DangerousD.GameCore.GameObjects { public abstract class Entity : GameObject - { - - + { public Entity(Vector2 position) : base(position) {} - + public virtual void SetPosition(Vector2 position) { _pos = position; } - } } diff --git a/DangerousD/GameCore/GameObjects/GameObject.cs b/DangerousD/GameCore/GameObjects/GameObject.cs index c354e3e..ae5cd2c 100644 --- a/DangerousD/GameCore/GameObjects/GameObject.cs +++ b/DangerousD/GameCore/GameObjects/GameObject.cs @@ -22,10 +22,12 @@ namespace DangerousD.GameCore protected abstract GraphicsComponent GraphicsComponent { get; } public GameObject(Vector2 pos) { + Initialize(); _pos = pos; Width = 500; Height = 101; //Animator = new GraphicsComponent(new() { "playerIdle" }); + LoadContent(); AppManager.Instance.GameManager.Register(this); } @@ -34,7 +36,7 @@ namespace DangerousD.GameCore { } - public virtual void Initialize(GraphicsDevice graphicsDevice) + public virtual void Initialize() { } diff --git a/DangerousD/GameCore/GameObjects/IDrawableObject.cs b/DangerousD/GameCore/GameObjects/IDrawableObject.cs index f157dcb..1d9ca5c 100644 --- a/DangerousD/GameCore/GameObjects/IDrawableObject.cs +++ b/DangerousD/GameCore/GameObjects/IDrawableObject.cs @@ -6,7 +6,7 @@ namespace DangerousD.GameCore.GUI { interface IDrawableObject { - void Initialize(GraphicsDevice graphicsDevice); + void Initialize(); void LoadContent(); void Update(GameTime gameTime); void Draw(SpriteBatch spriteBatch); diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs index cf33f30..d16936a 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasHands.cs @@ -39,12 +39,12 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters { if (Pos.Y> AppManager.Instance.GameManager.GetPlayer1.Pos.Y) { - velocity.Y = monster_speed; + velocity.Y = -monster_speed; } else { - velocity.Y = 0; + velocity.Y = monster_speed; } if (Pos.X> AppManager.Instance.GameManager.GetPlayer1.Pos.X) { @@ -58,6 +58,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters public override void Update(GameTime gameTime) { base.Update(gameTime); + Move(gameTime); if ((Pos.X + 20 <= AppManager.Instance.GameManager.GetPlayer1.Pos.X || Pos.X - 20 >= AppManager.Instance.GameManager.GetPlayer1.Pos.X)&&(Pos.Y + 20 <= AppManager.Instance.GameManager.GetPlayer1.Pos.Y || Pos.Y - 20 >= AppManager.Instance.GameManager.GetPlayer1.Pos.Y)) { diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs index 09a3928..d4fb5d2 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/SilasMaster.cs @@ -1,4 +1,5 @@ -using DangerousD.GameCore.Graphics; +using DangerousD.GameCore.GameObjects.Entities; +using DangerousD.GameCore.Graphics; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; @@ -15,6 +16,11 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters private int attackTime = 60; private int moveTime = 360; private int currentTime = 0; + private bool isGoRight = true; + int leftBorder; + int rightBorder; + List hands = new List(); + List balls = new List(); public SilasMaster(Vector2 position) : base(position) { name = "SilasMaster"; @@ -23,22 +29,47 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters monster_health = 15; monster_speed = 4; acceleration = Vector2.Zero; + leftBorder = (int)position.X - 60; + rightBorder = (int)position.X + 120; + acceleration = Vector2.Zero; + hands.Add(new SilasHands(new Vector2(Pos.X+60,Pos.Y+120))); + hands.Add(new SilasHands(new Vector2(Pos.X + 90, Pos.Y + 120))); + for (int i = 0; i < 4; i++) + { + SilasBall silasball = new SilasBall(new Vector2(Pos.X + i * 40, Pos.Y + 120), new Vector2((i - 2) * 4, 6)); + balls.Add(silasball); + } } protected override GraphicsComponent GraphicsComponent { get; } = new GraphicsComponent(new List() { "SilasMove", "SilasAttack" }, "SilasMove"); public override void Attack() { - if (currentTime==0) + + if (currentTime == 0) { GraphicsComponent.StartAnimation("SilasAttack"); + + } + else if (currentTime == attackTime / 2) + { + SpawnAttackBall(); } else if (currentTime >= attackTime) { + GraphicsComponent.StartAnimation("SilasMove"); currentTime = 0; } currentTime++; } - + private void SpawnAttackBall() + { + for (int i = 0; i < balls.Count; i++) + { + balls[i].SetPosition(new Vector2(Pos.X + i * 40, Pos.Y + 120)); + } + + + } public override void Death() { throw new NotImplementedException(); @@ -56,16 +87,38 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters currentTime = 0; } currentTime++; + if (isGoRight) + { + velocity.X = monster_speed; + } + else if (!isGoRight) + { + velocity.X = -monster_speed; + } + + if (Pos.X >= rightBorder) + { + isGoRight = false; + } + else if (Pos.X <= leftBorder) + { + isGoRight = true; + } } public override void Update(GameTime gameTime) { base.Update(gameTime); - if (GraphicsComponent.CurrentAnimation.Id=="SilasMove") + if (hands.Count<2) + { + hands.Add(new SilasHands(new Vector2(Pos.X + 60, Pos.Y + 120))); + } + if (GraphicsComponent.CurrentAnimation.Id == "SilasMove") { Move(gameTime); } else { + velocity = Vector2.Zero; Attack(); } } diff --git a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs index dba2deb..b679a37 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntities/Monsters/Zombie.cs @@ -7,23 +7,27 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using DangerousD.GameCore.Managers; namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters { public class Zombie : CoreEnemy { private bool isGoRight = true; - int leftBorder; - int rightBorder; + float leftBorder; + float rightBorder; bool isAttaking = false; + bool isTarget = false; + PhysicsManager physicsManager; public Zombie(Vector2 position) : base(position) { - Width = 72; - Height = 120; + Width = 24; + Height = 40; monster_speed = 3; name = "Zombie"; - leftBorder = (int)position.X - 60; - rightBorder = (int)position.X + 120; + leftBorder = (int)position.X - 100; + rightBorder = (int)position.X + 100; + physicsManager = new PhysicsManager(); } protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "ZombieMoveRight", "ZombieMoveLeft", "ZombieRightAttack", "ZombieLeftAttack" }, "ZombieMoveLeft"); @@ -31,6 +35,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters { if (!isAttaking) { + Target(); Move(gameTime); } @@ -106,5 +111,25 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters } base.OnCollision(gameObject); } + + public void Target() + { + if(physicsManager.RayCast(this, AppManager.Instance.GameManager.players[0]) == null) + { + if(isGoRight && this._pos.X <= AppManager.Instance.GameManager.players[0].Pos.X) + { + isTarget = true; + leftBorder = Pos.X - 10; + rightBorder = Pos.X + AppManager.Instance.GameManager.players[0].Pos.X; + } + + else if(!isGoRight && this._pos.X >= AppManager.Instance.GameManager.players[0].Pos.X) + { + isTarget = true; + rightBorder = Pos.X + 10; + leftBorder = AppManager.Instance.GameManager.players[0].Pos.X; + } + } + } } } diff --git a/DangerousD/GameCore/GameObjects/LivingEntity.cs b/DangerousD/GameCore/GameObjects/LivingEntity.cs index 5c18831..8341080 100644 --- a/DangerousD/GameCore/GameObjects/LivingEntity.cs +++ b/DangerousD/GameCore/GameObjects/LivingEntity.cs @@ -11,7 +11,11 @@ public abstract class LivingEntity : Entity { acceleration = new Vector2(0, 30); } - public void SetPosition(Vector2 position) { targetPosition = position; _pos = position; } //TODO befrend targetpos and physics engine + public override void SetPosition(Vector2 position) + { + targetPosition = position; _pos = position; + + } //TODO befrend targetpos and physics engine public override void Update(GameTime gameTime) { diff --git a/DangerousD/GameCore/GameObjects/MapObject.cs b/DangerousD/GameCore/GameObjects/MapObject.cs index d4180d0..24add79 100644 --- a/DangerousD/GameCore/GameObjects/MapObject.cs +++ b/DangerousD/GameCore/GameObjects/MapObject.cs @@ -1,13 +1,29 @@ -using Microsoft.Xna.Framework; +using System.Collections.Generic; +using Microsoft.Xna.Framework; using System.Security.Cryptography.X509Certificates; - +using DangerousD.GameCore.Graphics; +using Microsoft.Xna.Framework.Graphics; namespace DangerousD.GameCore.GameObjects; public abstract class MapObject : GameObject { public bool IsColliderOn; - public MapObject(Vector2 position) : base(position) + private Rectangle _sourceRectangle; + protected override GraphicsComponent GraphicsComponent { get; } = new("tiles"); + public MapObject(Vector2 position, Vector2 size, Rectangle sourceRectangle) : base(position) + { + _sourceRectangle = sourceRectangle; + Width = (int)size.X; + Height = (int)size.Y; + } + + public override void Initialize() { } + + public void Draw(SpriteBatch spriteBatch) + { + GraphicsComponent.DrawAnimation(Rectangle, spriteBatch, _sourceRectangle); + } } \ No newline at end of file diff --git a/DangerousD/GameCore/GameObjects/MapObjects/GrassBlock.cs b/DangerousD/GameCore/GameObjects/MapObjects/GrassBlock.cs deleted file mode 100644 index 3ada6f5..0000000 --- a/DangerousD/GameCore/GameObjects/MapObjects/GrassBlock.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Content; -using Microsoft.Xna.Framework.Graphics; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using DangerousD.GameCore.Graphics; - -namespace DangerousD.GameCore.GameObjects.MapObjects -{ - internal class GrassBlock : MapObject - { - protected override GraphicsComponent GraphicsComponent { get; } = new("wall"); - - public GrassBlock(Vector2 position) : base(position) - { - Width = 32; - Height = 32; - } - } -} diff --git a/DangerousD/GameCore/GameObjects/MapObjects/Platform.cs b/DangerousD/GameCore/GameObjects/MapObjects/Platform.cs new file mode 100644 index 0000000..f3648f9 --- /dev/null +++ b/DangerousD/GameCore/GameObjects/MapObjects/Platform.cs @@ -0,0 +1,12 @@ +using DangerousD.GameCore.Graphics; +using Microsoft.Xna.Framework; + +namespace DangerousD.GameCore.GameObjects.MapObjects; + +public class Platform : MapObject +{ + public Platform(Vector2 position, Vector2 size, Rectangle sourceRectangle) : base(position, size, sourceRectangle) + { + IsColliderOn = true; + } +} \ No newline at end of file diff --git a/DangerousD/GameCore/GameObjects/MapObjects/StopTile.cs b/DangerousD/GameCore/GameObjects/MapObjects/StopTile.cs new file mode 100644 index 0000000..096973b --- /dev/null +++ b/DangerousD/GameCore/GameObjects/MapObjects/StopTile.cs @@ -0,0 +1,12 @@ +using DangerousD.GameCore.Graphics; +using Microsoft.Xna.Framework; + +namespace DangerousD.GameCore.GameObjects.MapObjects; + +public class StopTile : MapObject +{ + public StopTile(Vector2 position, Vector2 size, Rectangle sourceRectangle) : base(position, size, sourceRectangle) + { + IsColliderOn = true; + } +} \ No newline at end of file diff --git a/DangerousD/GameCore/GameObjects/MapObjects/TestAnimationDeath.cs b/DangerousD/GameCore/GameObjects/MapObjects/TestAnimationDeath.cs deleted file mode 100644 index 8e9be4d..0000000 --- a/DangerousD/GameCore/GameObjects/MapObjects/TestAnimationDeath.cs +++ /dev/null @@ -1,25 +0,0 @@ -using DangerousD.GameCore.Graphics; -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace DangerousD.GameCore.GameObjects.MapObjects -{ - internal class TestAnimationDeath : Entity - { - protected override GraphicsComponent GraphicsComponent { get; } = new(new List { "death1", "deathbear" },"death1"); - - public TestAnimationDeath(Vector2 position) : base(position) - { - Width =512; - Height = 512; - - GraphicsComponent.StartAnimation("deathbear"); - - } - } -} diff --git a/DangerousD/GameCore/GameObjects/MapObjects/Tile.cs b/DangerousD/GameCore/GameObjects/MapObjects/Tile.cs new file mode 100644 index 0000000..2b11dda --- /dev/null +++ b/DangerousD/GameCore/GameObjects/MapObjects/Tile.cs @@ -0,0 +1,12 @@ +using DangerousD.GameCore.Graphics; +using Microsoft.Xna.Framework; + +namespace DangerousD.GameCore.GameObjects.MapObjects; + +public class Tile : MapObject +{ + public Tile(Vector2 position, Vector2 size, Rectangle sourceRectangle) : base(position, size, sourceRectangle) + { + IsColliderOn = false; + } +} \ No newline at end of file diff --git a/DangerousD/GameCore/Levels/ILevel.cs b/DangerousD/GameCore/Levels/ILevel.cs deleted file mode 100644 index 7fbec35..0000000 --- a/DangerousD/GameCore/Levels/ILevel.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace DangerousD.GameCore.Levels -{ - interface ILevel - { - void InitLevel(); - } -} diff --git a/DangerousD/GameCore/Levels/Level1.cs b/DangerousD/GameCore/Levels/Level1.cs deleted file mode 100644 index da68dc0..0000000 --- a/DangerousD/GameCore/Levels/Level1.cs +++ /dev/null @@ -1,35 +0,0 @@ -using DangerousD.GameCore.GameObjects.LivingEntities; -using DangerousD.GameCore.GameObjects.MapObjects; -using Microsoft.Xna.Framework; -using DangerousD.GameCore.GameObjects.LivingEntities.Monsters; -using System.Collections.Generic; - -namespace DangerousD.GameCore.Levels -{ - public class Level1 : ILevel - { - public void InitLevel() - { - new Player(new Vector2(0,0)); - - var Spider = new Spider(new Vector2(112, 0)); - var FlameSkull = new FlameSkull(new Vector2(512, 0)); - var Werewolf = new Werewolf(new Vector2(640, 0)); - var Ghost = new Ghost(new Vector2(730, 0)); - var Frank = new Frank(new Vector2(100, 64)); - var FrankBalls = new FrankBalls(new Vector2(Frank.Pos.X, Frank.Pos.Y)); - var Zombie = new Zombie(new Vector2(300, 64)); - - var SilasHand = new SilasHands(new Vector2(200,64)); - var SilasMaster = new SilasMaster(new Vector2(400, 64)); - new GrassBlock(new Vector2(0, 224)); - for (int i = 0; i < 50; i++) - { - new GrassBlock(new Vector2(i*32, 256)); - } - new GrassBlock(new Vector2(500, 224)); - Player player = new Player(new Vector2(400, 64)); - player.AnimationJump(); - } - } -} diff --git a/DangerousD/GameCore/Managers/AppManager.cs b/DangerousD/GameCore/Managers/AppManager.cs index 1261b82..f800998 100644 --- a/DangerousD/GameCore/Managers/AppManager.cs +++ b/DangerousD/GameCore/Managers/AppManager.cs @@ -31,7 +31,7 @@ namespace DangerousD.GameCore public Point inGameResolution = new Point(800, 480); private RenderTarget2D renderTarget; - public GameManager GameManager { get; private set; } = new GameManager(); + public GameManager GameManager { get; private set; } = new(); public AnimationBuilder AnimationBuilder { get; private set; } = new AnimationBuilder(); public NetworkManager NetworkManager { get; private set; } = new NetworkManager(); public InputManager InputManager { get; private set; } = new InputManager(); @@ -39,9 +39,9 @@ namespace DangerousD.GameCore public SettingsManager SettingsManager { get; private set; } = new SettingsManager(); public AppManager() { + Content.RootDirectory = "Content"; Instance = this; _graphics = new GraphicsDeviceManager(this); - Content.RootDirectory = "Content"; IsMouseVisible = true; TargetElapsedTime = TimeSpan.FromMilliseconds(1000 / 30); @@ -64,10 +64,11 @@ namespace DangerousD.GameCore protected override void Initialize() { + GameManager.Initialize(); AnimationBuilder.LoadAnimations(); - MenuGUI.Initialize(GraphicsDevice); - LoginGUI.Initialize(GraphicsDevice); - LobbyGUI.Initialize(GraphicsDevice); + MenuGUI.Initialize(); + LoginGUI.Initialize(); + LobbyGUI.Initialize(); base.Initialize(); } @@ -165,7 +166,7 @@ namespace DangerousD.GameCore case GameState.Lobby: break; case GameState.Game: - GameManager.mapManager.LoadLevel(""); + GameManager.mapManager.LoadLevel("lvl"); break; case GameState.GameOver: break; @@ -174,30 +175,32 @@ namespace DangerousD.GameCore } } - public void NetworkSync(NetworkTask networkTask) + public void NetworkSync(List networkTasks) { - //TODO - return; - switch (networkTask.operation) + foreach (NetworkTask networkTask in networkTasks) { - case NetworkTaskOperationEnum.TakeDamage: - break; - case NetworkTaskOperationEnum.SendSound: - SoundManager.StartSound(networkTask.name, networkTask.position, GameManager.GetPlayer1.Pos); - break; - case NetworkTaskOperationEnum.CreateEntity: - break; - case NetworkTaskOperationEnum.SendPosition: - break; - case NetworkTaskOperationEnum.ChangeState: - break; - case NetworkTaskOperationEnum.ConnectToHost: - break; - case NetworkTaskOperationEnum.GetClientPlayerId: - break; - default: - break; + switch (networkTask.operation) + { + case NetworkTaskOperationEnum.TakeDamage: + break; + case NetworkTaskOperationEnum.SendSound: + SoundManager.StartSound(networkTask.name, networkTask.position, GameManager.GetPlayer1.Pos); + break; + case NetworkTaskOperationEnum.CreateEntity: + break; + case NetworkTaskOperationEnum.SendPosition: + break; + case NetworkTaskOperationEnum.ChangeState: + break; + case NetworkTaskOperationEnum.ConnectToHost: + break; + case NetworkTaskOperationEnum.GetClientPlayerId: + break; + default: + break; + } } + } public void SetMultiplayerState(MultiPlayerStatus multiPlayerStatus) { diff --git a/DangerousD/GameCore/Managers/GameManager.cs b/DangerousD/GameCore/Managers/GameManager.cs index a177e86..f2ce8c8 100644 --- a/DangerousD/GameCore/Managers/GameManager.cs +++ b/DangerousD/GameCore/Managers/GameManager.cs @@ -7,6 +7,7 @@ using Microsoft.Xna.Framework.Graphics; using System; using System.Collections.Generic; using System.Text; +using DangerousD.GameCore.GameObjects.LivingEntities.Monsters; namespace DangerousD.GameCore { @@ -16,6 +17,7 @@ namespace DangerousD.GameCore public List livingEntities; public List entities; public List mapObjects; + public List others; public MapManager mapManager; public PhysicsManager physicsManager; public List players; @@ -23,14 +25,23 @@ namespace DangerousD.GameCore public Player GetPlayer1 { get; private set; } public GameManager() { + others = new List(); GetAllGameObjects = new List(); livingEntities = new List(); mapObjects = new List(); entities = new List(); players = new List(); - mapManager = new MapManager(); + mapManager = new MapManager(1); physicsManager = new PhysicsManager(); - mapManager.Init(); + } + + public void Initialize() + { + //mapManager.LoadLevel("Level1"); + } + + public void LoadContent() + { } internal void Register(GameObject gameObject) @@ -77,8 +88,11 @@ namespace DangerousD.GameCore item.Update(gameTime); foreach (var item in entities) item.Update(gameTime); - foreach (var item in livingEntities) - item.Update(gameTime); + + for (int i = 0; i < livingEntities.Count; i++) + { + livingEntities[i].Update(gameTime); + } foreach (var item in otherObjects) item.Update(gameTime); @@ -87,4 +101,4 @@ namespace DangerousD.GameCore } } -} \ No newline at end of file +} diff --git a/DangerousD/GameCore/Managers/MapManager.cs b/DangerousD/GameCore/Managers/MapManager.cs index f5c9d28..36a0f6b 100644 --- a/DangerousD/GameCore/Managers/MapManager.cs +++ b/DangerousD/GameCore/Managers/MapManager.cs @@ -1,26 +1,115 @@ -using DangerousD.GameCore.GameObjects; -using DangerousD.GameCore.Graphics; -using DangerousD.GameCore.Levels; -using System; +using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; -using System.Net.Security; -using System.Text; -using System.Threading.Tasks; +using System.Xml; +using DangerousD.GameCore.GameObjects.MapObjects; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System.Xml.Serialization; +using DangerousD.GameCore.GameObjects; namespace DangerousD.GameCore.Managers { public class MapManager { - ILevel Level; - public void Init() + private int _columns; + private int _scale; + + public MapManager(int scale) { - Level = new Level1(); + _scale = scale; } + //Level public void LoadLevel(string level) { - Level.InitLevel(); + LoadTilesData(); + + XmlDocument xml = new(); + xml.Load($"../../../Content/{level}.tmx"); + Vector2 tileSize = new(int.Parse(xml.DocumentElement.Attributes["tilewidth"].Value), + int.Parse(xml.DocumentElement.Attributes["tileheight"].Value)); + //tileSize *= _scale; + + foreach (XmlNode layer in xml.DocumentElement.SelectNodes("layer")) + { + InstantiateTiles(layer, tileSize); + } + + foreach (XmlNode layer in xml.DocumentElement.SelectNodes("objectgroup")) + { + InstantiateEntities(layer); + } + } + + private void InstantiateTiles(XmlNode layer, Vector2 tileSize) + { + string tileType = layer.Attributes["class"].Value; + float offsetX = layer.Attributes["offsetx"] is not null ? float.Parse(layer.Attributes["offsetx"].Value) : 0; + float offsetY = layer.Attributes["offsety"] is not null ? float.Parse(layer.Attributes["offsety"].Value) : 0; + + + Debug.Write(layer.SelectNodes("data/chunk").Count); + foreach (XmlNode chunk in layer.SelectNodes("data/chunk")) + { + int chunkW = int.Parse(chunk.Attributes["width"].Value); + int chunkX = int.Parse(chunk.Attributes["x"].Value); + int chunkY = int.Parse(chunk.Attributes["y"].Value); + + + List tiles = chunk.InnerText.Split(',').Select(int.Parse).ToList(); + for (int i = 0; i < tiles.Count; i++) + { + if (tiles[i] != 0) + { + Vector2 pos = new(((chunkX+ i % chunkW) * tileSize.X + offsetX) * _scale, + ((chunkY + i / chunkW) * tileSize.Y + offsetY) * _scale); + //pos *= _scale; + Rectangle sourceRect = new(new Point((tiles[i] -1) % _columns, (tiles[i] -1) / _columns) * tileSize.ToPoint(), tileSize.ToPoint()); + Type type = Type.GetType($"DangerousD.GameCore.GameObjects.MapObjects.{tileType}"); + Activator.CreateInstance(type, pos, tileSize * _scale, sourceRect); + + /*switch (tileType) + { + case "collidable": + new StopTile(pos, tileSize * _scale, sourceRect); + break; + case "platform": + new Platform(pos, tileSize * _scale, sourceRect); + break; + case "non_collidable": + new Tile(pos, tileSize * _scale, sourceRect); + break; + }*/ + } + + } + } + } + + private void LoadTilesData() + { + XmlDocument xml = new(); + xml.Load($"../../../Content/map.tsx"); + XmlNode root = xml.DocumentElement; + + _columns = int.Parse(root.Attributes["columns"].Value); + } + + private void InstantiateEntities(XmlNode group) + { + string entityType = group.Attributes["class"].Value; + float offsetX = group.Attributes["offsetx"] is not null ? float.Parse(group.Attributes["offsetx"].Value) : 0; + float offsetY = group.Attributes["offsety"] is not null ? float.Parse(group.Attributes["offsety"].Value) : 0; + foreach (XmlNode entity in group.ChildNodes) + { + Type type = Type.GetType($"DangerousD.GameCore.GameObjects.{entityType}"); + Entity inst = (Entity)Activator.CreateInstance(type, new Vector2(float.Parse(entity.Attributes["x"].Value) + offsetX, float.Parse(entity.Attributes["y"].Value) + offsetY) * _scale); + inst.SetPosition(new Vector2(inst.Pos.X, inst.Pos.Y - inst.Height)); + inst.Height *= _scale; + inst.Width *= _scale; + } } } } diff --git a/DangerousD/GameCore/Network/NetworkManager.cs b/DangerousD/GameCore/Network/NetworkManager.cs index bac781f..caf16a1 100644 --- a/DangerousD/GameCore/Network/NetworkManager.cs +++ b/DangerousD/GameCore/Network/NetworkManager.cs @@ -10,7 +10,7 @@ namespace DangerousD.GameCore.Network { public class NetworkManager { - public delegate void ReceivingHandler(NetworkTask networkTask); + public delegate void ReceivingHandler(List networkTask); public event ReceivingHandler GetReceivingMessages; @@ -89,8 +89,6 @@ namespace DangerousD.GameCore.Network } public void SendMsg(NetworkTask networkTask) { - //TODO - return; byte[] Data = Encoding.Unicode.GetBytes(JsonConvert.SerializeObject(networkTask)); int count = Data.Length; if (state == "Host") @@ -146,7 +144,7 @@ namespace DangerousD.GameCore.Network } else { - GetReceivingMessages(JsonConvert.DeserializeObject(so.sb.ToString())); + GetReceivingMessages(JsonConvert.DeserializeObject>(so.sb.ToString())); } } catch { } diff --git a/NuGet.config b/NuGet.config new file mode 100644 index 0000000..90dab50 --- /dev/null +++ b/NuGet.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file