Merge branch 'черешня' into reserv
# Conflicts: # DangerousD/Content/Content.mgcb
This commit is contained in:
commit
9d2ff11d50
35 changed files with 1171 additions and 227 deletions
|
@ -21,18 +21,6 @@
|
||||||
/processorParam:TextureFormat=Compressed
|
/processorParam:TextureFormat=Compressed
|
||||||
/build:ButtonFont.spritefont
|
/build:ButtonFont.spritefont
|
||||||
|
|
||||||
#begin checkboxs_off.png
|
|
||||||
/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:checkboxs_off.png
|
|
||||||
|
|
||||||
#begin checkboxs_off-on.png
|
#begin checkboxs_off-on.png
|
||||||
/importer:TextureImporter
|
/importer:TextureImporter
|
||||||
/processor:TextureProcessor
|
/processor:TextureProcessor
|
||||||
|
@ -45,6 +33,18 @@
|
||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:checkboxs_off-on.png
|
/build:checkboxs_off-on.png
|
||||||
|
|
||||||
|
#begin checkboxs_off.png
|
||||||
|
/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:checkboxs_off.png
|
||||||
|
|
||||||
#begin checkboxs_on.png
|
#begin checkboxs_on.png
|
||||||
/importer:TextureImporter
|
/importer:TextureImporter
|
||||||
/processor:TextureProcessor
|
/processor:TextureProcessor
|
||||||
|
@ -93,7 +93,7 @@
|
||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:Diamond.png
|
/build:Diamond.png
|
||||||
|
|
||||||
#begin doors.png
|
#begin door.png
|
||||||
/importer:TextureImporter
|
/importer:TextureImporter
|
||||||
/processor:TextureProcessor
|
/processor:TextureProcessor
|
||||||
/processorParam:ColorKeyColor=255,0,255,255
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
/processorParam:ResizeToPowerOfTwo=False
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
/processorParam:MakeSquare=False
|
/processorParam:MakeSquare=False
|
||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:doors.png
|
/build:door.png
|
||||||
|
|
||||||
#begin Font_12.spritefont
|
#begin Font_12.spritefont
|
||||||
/importer:FontDescriptionImporter
|
/importer:FontDescriptionImporter
|
||||||
|
@ -157,7 +157,7 @@
|
||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:menuFon.jpg
|
/build:menuFon.jpg
|
||||||
|
|
||||||
#begin MenuFon2.jpg
|
#begin menuFon2.jpg
|
||||||
/importer:TextureImporter
|
/importer:TextureImporter
|
||||||
/processor:TextureProcessor
|
/processor:TextureProcessor
|
||||||
/processorParam:ColorKeyColor=255,0,255,255
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
@ -167,7 +167,7 @@
|
||||||
/processorParam:ResizeToPowerOfTwo=False
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
/processorParam:MakeSquare=False
|
/processorParam:MakeSquare=False
|
||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:MenuFon2.jpg
|
/build:menuFon2.jpg
|
||||||
|
|
||||||
#begin menuFon3.jpg
|
#begin menuFon3.jpg
|
||||||
/importer:TextureImporter
|
/importer:TextureImporter
|
||||||
|
@ -260,7 +260,8 @@
|
||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:sliderBackground.png
|
/build:sliderBackground.png
|
||||||
|
|
||||||
#begin SmokeAnimation2.png
|
|
||||||
|
#begin smokeAnimation2.png
|
||||||
/importer:TextureImporter
|
/importer:TextureImporter
|
||||||
/processor:TextureProcessor
|
/processor:TextureProcessor
|
||||||
/processorParam:ColorKeyColor=255,0,255,255
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
@ -270,7 +271,31 @@
|
||||||
/processorParam:ResizeToPowerOfTwo=False
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
/processorParam:MakeSquare=False
|
/processorParam:MakeSquare=False
|
||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:SmokeAnimation2.png
|
/build:smokeAnimation2.png
|
||||||
|
|
||||||
|
#begin sounds/DoomTestSong.mp3
|
||||||
|
/importer:Mp3Importer
|
||||||
|
/processor:SoundEffectProcessor
|
||||||
|
/processorParam:Quality=Best
|
||||||
|
/build:sounds/DoomTestSong.mp3
|
||||||
|
|
||||||
|
#begin sounds/shotgun_shot.mp3
|
||||||
|
/importer:Mp3Importer
|
||||||
|
/processor:SoundEffectProcessor
|
||||||
|
/processorParam:Quality=Best
|
||||||
|
/build:sounds/shotgun_shot.mp3
|
||||||
|
|
||||||
|
#begin textboxbackground1-1.png
|
||||||
|
/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:textboxbackground1-1.png
|
||||||
|
|
||||||
#begin sounds/collected_coins.mp3
|
#begin sounds/collected_coins.mp3
|
||||||
/importer:Mp3Importer
|
/importer:Mp3Importer
|
||||||
|
@ -302,7 +327,7 @@
|
||||||
/processorParam:Quality=Best
|
/processorParam:Quality=Best
|
||||||
/build:sounds/z3.mp3
|
/build:sounds/z3.mp3
|
||||||
|
|
||||||
#begin textboxbackground1-1.png
|
#begin textboxbackground2-1.png
|
||||||
/importer:TextureImporter
|
/importer:TextureImporter
|
||||||
/processor:TextureProcessor
|
/processor:TextureProcessor
|
||||||
/processorParam:ColorKeyColor=255,0,255,255
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
@ -312,7 +337,7 @@
|
||||||
/processorParam:ResizeToPowerOfTwo=False
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
/processorParam:MakeSquare=False
|
/processorParam:MakeSquare=False
|
||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:textboxbackground1-1.png
|
/build:textboxbackground2-1.png
|
||||||
|
|
||||||
#begin textboxbackground2,5-1.png
|
#begin textboxbackground2,5-1.png
|
||||||
/importer:TextureImporter
|
/importer:TextureImporter
|
||||||
|
@ -326,18 +351,6 @@
|
||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:textboxbackground2,5-1.png
|
/build:textboxbackground2,5-1.png
|
||||||
|
|
||||||
#begin textboxbackground2-1.png
|
|
||||||
/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:textboxbackground2-1.png
|
|
||||||
|
|
||||||
#begin textboxbackground6-1.png
|
#begin textboxbackground6-1.png
|
||||||
/importer:TextureImporter
|
/importer:TextureImporter
|
||||||
/processor:TextureProcessor
|
/processor:TextureProcessor
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<tileset version="1.10" tiledversion="1.10.2" name="Door" tilewidth="32" tileheight="48" tilecount="2" columns="2">
|
<tileset version="1.10" tiledversion="1.10.2" name="Door" tilewidth="32" tileheight="48" tilecount="2" columns="2">
|
||||||
<image source="doors.png" width="64" height="48"/>
|
<image source="door.png" width="64" height="48"/>
|
||||||
</tileset>
|
</tileset>
|
||||||
|
|
1
DangerousD/Content/animations/DeathFromGhost
Normal file
1
DangerousD/Content/animations/DeathFromGhost
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"id":"DeathFromGhost","textureName":"deathAnimation","startSpriteRectangle":{"X":1,"Y":246,"Width":48,"Height":48},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":1,"framesCount":5,"isCycle":false,"offset":"0, 0"}
|
1
DangerousD/Content/animations/DeathFromHunchman
Normal file
1
DangerousD/Content/animations/DeathFromHunchman
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"id":"DeathFromHunchman","textureName":"deathAnimation","startSpriteRectangle":{"X":1,"Y":1,"Width":48,"Height":48},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":1,"framesCount":5,"isCycle":false,"offset":"0, 0"}
|
1
DangerousD/Content/animations/DeathFromSilasMaster
Normal file
1
DangerousD/Content/animations/DeathFromSilasMaster
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"id":"DeathFromSilasMaster","textureName":"deathAnimation","startSpriteRectangle":{"X":1,"Y":295,"Width":48,"Height":48},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":1,"framesCount":5,"isCycle":false,"offset":"0, 0"}
|
1
DangerousD/Content/animations/DeathFromSlime
Normal file
1
DangerousD/Content/animations/DeathFromSlime
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"id":"DeathFromSlime","textureName":"deathAnimation","startSpriteRectangle":{"X":1,"Y":50,"Width":48,"Height":48},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":1,"framesCount":5,"isCycle":false,"offset":"0, 0"}
|
1
DangerousD/Content/animations/DeathFromSpider
Normal file
1
DangerousD/Content/animations/DeathFromSpider
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"id":"DeathFromSpider","textureName":"deathAnimation","startSpriteRectangle":{"X":1,"Y":148,"Width":48,"Height":48},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":1,"framesCount":5,"isCycle":false,"offset":"0, 0"}
|
1
DangerousD/Content/animations/DeathFromWerewolf
Normal file
1
DangerousD/Content/animations/DeathFromWerewolf
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"id":"DeathFromWerewolf","textureName":"deathAnimation","startSpriteRectangle":{"X":1,"Y":197,"Width":48,"Height":48},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":1,"framesCount":5,"isCycle":false,"offset":"0, 0"}
|
|
@ -1 +1 @@
|
||||||
{"id":"GhostAttack","textureName":"MonstersAnimations","startSpriteRectangle":{"X":101,"Y":503,"Width":24,"Height":31},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":1,"framesCount":2,"isCycle":false,"offset":"0, 0"}
|
{"id":"GhostAttack","textureName":"MonstersAnimations","startSpriteRectangle":{"X":101,"Y":503,"Width":24,"Height":31},"frameSecond":[{"Item1":0,"Item2":10}],"textureFrameInterval":50,"framesCount":2,"isCycle":false,"offset":"0, 0"}
|
||||||
|
|
1
DangerousD/Content/animations/playerShootBoomUpLeft
Normal file
1
DangerousD/Content/animations/playerShootBoomUpLeft
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{"id":"playerShootBoomUpLeft","textureName":"playerAnimation","startSpriteRectangle":{"X":267,"Y":34,"Width":24,"Height":32},"frameSecond":[{"Item1":0,"Item2":12}],"textureFrameInterval":1,"framesCount":2,"isCycle":false,"offset":"0, 0"}
|
24
DangerousD/Content/animations/playerShootBoomUpRight
Normal file
24
DangerousD/Content/animations/playerShootBoomUpRight
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"id": "playerShootBoomUpRight",
|
||||||
|
"textureName": "playerAnimation",
|
||||||
|
"startSpriteRectangle": {
|
||||||
|
"X": 267,
|
||||||
|
"Y": 1,
|
||||||
|
"Width": 24,
|
||||||
|
"Height": 32
|
||||||
|
},
|
||||||
|
"frameSecond": [
|
||||||
|
{
|
||||||
|
"Item1": 0,
|
||||||
|
"Item2": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Item1": 1,
|
||||||
|
"Item2": 20
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"textureFrameInterval": 1,
|
||||||
|
"framesCount": 2,
|
||||||
|
"isCycle": false,
|
||||||
|
"offset": "0, 0"
|
||||||
|
}
|
Before Width: | Height: | Size: 472 B After Width: | Height: | Size: 472 B |
652
DangerousD/Content/lvl2.tmx
Normal file
652
DangerousD/Content/lvl2.tmx
Normal file
|
@ -0,0 +1,652 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.10" tiledversion="1.10.2" orientation="orthogonal" renderorder="right-down" width="30" height="20" tilewidth="16" tileheight="16" infinite="1" nextlayerid="7" nextobjectid="61">
|
||||||
|
<tileset firstgid="1" name="map" tilewidth="16" tileheight="16" tilecount="871" columns="13">
|
||||||
|
<image source="tiles.BMP" width="208" height="1072"/>
|
||||||
|
</tileset>
|
||||||
|
<tileset firstgid="872" source="map.tsx"/>
|
||||||
|
<tileset firstgid="1743" source="Door.tsx"/>
|
||||||
|
<layer id="2" name="Collision" class="StopTile" width="30" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
<chunk x="-16" y="-32" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1157,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1027,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1027,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1027
|
||||||
|
</chunk>
|
||||||
|
<chunk x="0" y="-32" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="16" y="-32" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="32" y="-32" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,1157,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="48" y="-32" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="-16" y="-16" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1027,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1027,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1027,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1157,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156
|
||||||
|
</chunk>
|
||||||
|
<chunk x="0" y="-16" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="16" y="-16" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="32" y="-16" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="48" y="-16" width="16" height="16">
|
||||||
|
1027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="-16" y="0" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,405
|
||||||
|
</chunk>
|
||||||
|
<chunk x="0" y="0" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405
|
||||||
|
</chunk>
|
||||||
|
<chunk x="16" y="0" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
1278,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405
|
||||||
|
</chunk>
|
||||||
|
<chunk x="32" y="0" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,1027,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,1027,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,1027,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,1027,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,1027,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,1027,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,0,0,405,405,405,405,405,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,405,405,405,405,405,405,405,405,405,405,405,405,405,405,405
|
||||||
|
</chunk>
|
||||||
|
<chunk x="48" y="0" width="16" height="16">
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer id="1" name="Background" class="Tile" width="30" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
<chunk x="0" y="-32" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
576,577,578,579,580,581,576,577,578,579,580,581,576,577,578,579,
|
||||||
|
589,590,591,592,593,594,589,590,591,592,593,594,589,590,591,592,
|
||||||
|
602,603,604,605,606,607,602,603,604,605,606,607,602,603,1453,1454
|
||||||
|
</chunk>
|
||||||
|
<chunk x="16" y="-32" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
580,581,576,577,578,579,580,581,576,577,578,579,580,581,576,577,
|
||||||
|
593,594,589,590,591,592,593,594,589,590,591,592,593,594,589,590,
|
||||||
|
606,607,602,603,604,605,606,607,602,603,604,605,606,607,602,603
|
||||||
|
</chunk>
|
||||||
|
<chunk x="32" y="-32" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
578,579,580,581,576,577,578,579,580,581,576,577,578,579,580,581,
|
||||||
|
591,592,593,594,589,590,591,592,593,594,589,590,591,592,593,594,
|
||||||
|
604,605,606,607,602,603,604,1453,1454,607,602,603,604,605,606,607
|
||||||
|
</chunk>
|
||||||
|
<chunk x="0" y="-16" width="16" height="16">
|
||||||
|
615,616,617,618,619,620,615,616,950,951,619,620,615,616,1466,1467,
|
||||||
|
628,629,630,631,632,633,628,629,963,964,632,633,628,629,1479,1480,
|
||||||
|
641,642,643,1378,645,646,641,642,976,977,645,646,641,642,643,644,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
576,577,578,579,580,581,576,577,578,579,580,581,576,577,578,579,
|
||||||
|
589,590,591,592,593,594,589,590,591,1333,1334,594,589,590,591,592,
|
||||||
|
602,603,604,605,606,607,602,603,604,1346,1347,607,602,603,604,605,
|
||||||
|
615,616,950,951,619,620,615,616,617,1359,1360,620,615,616,950,951,
|
||||||
|
628,629,963,964,632,633,628,629,630,631,632,633,628,629,963,964,
|
||||||
|
641,642,976,977,645,646,641,642,643,1378,645,646,641,642,976,977,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
576,577,578,579,580,581,576,577,578,579,580,581,576,577,578,579,
|
||||||
|
589,590,591,592,593,594,589,590,591,592,593,594,589,590,591,592,
|
||||||
|
602,603,604,605,606,607,602,603,604,1325,1326,607,602,603,604,605,
|
||||||
|
615,616,617,618,619,620,615,616,617,1338,1339,620,615,616,79,80,
|
||||||
|
628,629,630,631,632,633,628,629,630,631,632,633,628,629,92,93
|
||||||
|
</chunk>
|
||||||
|
<chunk x="16" y="-16" width="16" height="16">
|
||||||
|
619,620,615,616,617,618,619,620,615,616,950,951,619,620,615,616,
|
||||||
|
632,633,628,629,630,631,632,633,628,629,963,964,632,633,628,629,
|
||||||
|
645,646,641,642,643,644,645,646,641,642,976,977,645,646,641,642,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
580,581,576,577,578,579,580,581,576,577,578,579,1239,581,576,577,
|
||||||
|
593,594,589,590,591,592,593,594,589,590,591,592,1252,594,589,590,
|
||||||
|
606,607,602,603,1453,1454,606,607,602,603,604,605,1265,607,602,603,
|
||||||
|
619,620,615,616,1466,1467,619,620,615,616,617,618,619,620,615,616,
|
||||||
|
632,633,628,629,1479,1480,632,633,628,629,630,631,632,633,628,629,
|
||||||
|
645,646,641,642,643,644,645,646,641,642,643,644,645,646,641,642,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
580,581,576,577,578,579,580,581,576,577,578,579,580,581,576,577,
|
||||||
|
593,594,589,590,591,592,593,594,589,590,591,592,593,594,589,590,
|
||||||
|
606,607,602,603,604,605,606,607,602,603,604,605,606,607,602,603,
|
||||||
|
619,620,615,616,617,618,619,620,615,950,951,618,619,620,615,616,
|
||||||
|
632,633,628,629,630,631,632,633,628,963,964,631,632,633,628,629
|
||||||
|
</chunk>
|
||||||
|
<chunk x="32" y="-16" width="16" height="16">
|
||||||
|
617,618,619,620,615,616,617,1466,1467,620,615,616,950,951,619,620,
|
||||||
|
1397,631,632,633,628,629,630,1479,1480,633,628,629,963,964,632,633,
|
||||||
|
1410,644,645,646,641,642,643,644,645,646,641,642,976,977,645,646,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
578,579,580,581,576,577,578,579,580,581,576,577,578,579,580,581,
|
||||||
|
591,1333,1334,594,589,590,591,592,593,594,589,590,591,592,593,594,
|
||||||
|
604,1346,1347,607,602,603,604,605,606,607,602,603,604,605,606,607,
|
||||||
|
617,1359,1360,620,615,1325,1326,618,619,620,615,616,950,951,619,620,
|
||||||
|
1265,631,632,633,628,1338,1339,631,632,633,628,629,963,964,632,633,
|
||||||
|
1278,644,645,646,641,642,643,644,1378,646,641,642,976,977,645,646,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
578,579,580,581,576,577,578,579,580,581,576,577,578,579,580,581,
|
||||||
|
1453,1454,593,594,589,590,591,592,593,594,589,590,591,592,593,594,
|
||||||
|
1466,1467,606,607,602,603,604,605,606,607,602,603,604,605,606,607,
|
||||||
|
1479,1480,619,620,615,616,950,951,619,620,615,616,617,618,619,620,
|
||||||
|
630,631,632,633,628,629,963,964,632,633,628,629,630,631,632,633
|
||||||
|
</chunk>
|
||||||
|
<chunk x="0" y="0" width="16" height="16">
|
||||||
|
641,642,643,644,645,646,641,642,643,644,645,646,641,642,105,106,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
576,577,578,579,580,581,576,577,578,579,580,581,576,577,578,579,
|
||||||
|
589,590,591,592,593,594,589,590,591,592,593,594,589,590,591,592,
|
||||||
|
602,603,1453,1454,606,607,602,603,604,605,606,607,602,603,604,605,
|
||||||
|
615,616,1466,1467,619,620,615,616,950,951,619,620,615,616,617,618,
|
||||||
|
628,629,1479,1480,632,633,628,629,963,964,632,633,628,629,630,631,
|
||||||
|
641,642,643,644,645,646,641,642,976,977,645,646,641,642,643,644,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
576,577,578,579,580,581,576,577,578,579,580,581,576,577,578,579,
|
||||||
|
589,590,591,592,593,594,589,590,591,592,593,594,589,590,591,592,
|
||||||
|
602,603,604,605,606,607,602,603,604,573,574,607,602,603,604,454,
|
||||||
|
615,950,951,618,619,620,615,616,617,618,619,620,615,616,617,467,
|
||||||
|
628,963,964,631,632,633,628,629,630,631,632,633,628,629,630,631,
|
||||||
|
641,976,977,1378,645,646,641,642,643,644,645,646,641,642,643,644,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="16" y="0" width="16" height="16">
|
||||||
|
645,646,641,642,643,1378,645,646,641,976,977,644,645,646,641,642,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
580,581,576,577,578,579,580,581,576,577,578,579,580,581,576,577,
|
||||||
|
593,594,589,590,591,592,593,594,589,590,591,592,593,594,589,590,
|
||||||
|
0,607,602,603,604,605,606,607,602,603,1325,1326,606,607,602,603,
|
||||||
|
0,620,615,616,617,618,619,620,615,616,1338,1339,619,620,615,616,
|
||||||
|
0,633,628,0,0,631,632,633,628,629,1397,631,632,633,628,629,
|
||||||
|
0,646,641,0,0,644,645,646,641,642,1410,644,645,646,641,642,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
580,581,576,577,578,579,580,581,576,577,578,579,580,581,576,577,
|
||||||
|
593,594,589,590,591,462,463,594,589,590,591,592,593,594,589,590,
|
||||||
|
455,607,602,603,604,475,476,607,602,603,604,605,606,607,602,603,
|
||||||
|
468,620,615,616,617,488,489,620,615,616,617,0,0,620,615,616,
|
||||||
|
632,633,628,629,630,631,632,633,628,629,630,0,0,633,628,629,
|
||||||
|
645,646,641,642,643,644,645,646,641,642,643,0,0,646,641,642,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="32" y="0" width="16" height="16">
|
||||||
|
643,644,645,646,641,642,976,977,645,646,641,642,1378,644,645,646,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
578,579,580,581,576,0,578,579,580,581,576,577,578,579,580,581,
|
||||||
|
591,592,593,594,589,0,591,592,593,594,589,590,591,592,593,594,
|
||||||
|
604,605,606,607,602,0,604,605,606,607,602,603,604,605,606,607,
|
||||||
|
950,951,619,620,615,0,617,618,619,620,615,616,950,951,619,620,
|
||||||
|
963,964,632,633,628,0,630,631,632,633,628,629,963,964,632,633,
|
||||||
|
976,977,645,646,641,0,643,1378,645,646,641,642,976,977,645,646,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
578,579,580,581,576,577,578,579,580,581,576,577,578,579,580,581,
|
||||||
|
591,592,593,594,589,590,591,592,593,594,589,590,591,592,593,594,
|
||||||
|
604,605,606,607,602,603,604,605,606,0,0,603,604,605,606,607,
|
||||||
|
950,951,619,620,615,616,617,618,619,0,0,616,617,618,619,620,
|
||||||
|
963,964,632,633,628,629,630,631,0,0,0,0,630,631,632,633,
|
||||||
|
976,977,645,646,641,642,643,644,0,0,0,0,643,644,645,1378,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer id="4" name="Boxes" class="Platform" width="30" height="20">
|
||||||
|
<data encoding="csv">
|
||||||
|
<chunk x="0" y="-16" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,1567,1568,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="16" y="-16" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,1567,1568,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,1580,1581,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="0" y="0" width="16" height="16">
|
||||||
|
0,0,1580,1581,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="16" y="0" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,1567,1568,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,1580,1581,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,1582,1583,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,1567,1568,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,1580,1581,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
<chunk x="32" y="0" width="16" height="16">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,1238,1238,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,1567,1568,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,1580,1581,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,1567,1568,1567,1568,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,1580,1581,1580,1581,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</chunk>
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<objectgroup id="6" name="Player" class="LivingEntities.Player">
|
||||||
|
<object id="60" x="240" y="10.6667">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="3" name="Doors">
|
||||||
|
<object id="26" type="Entities.TeleportingDoor" gid="873" x="16" y="240.091" width="32" height="48">
|
||||||
|
<properties>
|
||||||
|
<property name="destination" type="object" value="27"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="27" type="Entities.TeleportingDoor" gid="873" x="128" y="128" width="32" height="48">
|
||||||
|
<properties>
|
||||||
|
<property name="destination" type="object" value="26"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="28" type="Entities.Door" gid="873" x="224.091" y="16" width="32" height="48"/>
|
||||||
|
<object id="29" type="Entities.TeleportingDoor" gid="873" x="400" y="16.0625" width="32" height="48">
|
||||||
|
<properties>
|
||||||
|
<property name="destination" type="object" value="30"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="30" type="Entities.TeleportingDoor" gid="873" x="32" y="-96.0909" width="32" height="48">
|
||||||
|
<properties>
|
||||||
|
<property name="destination" type="object" value="29"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="31" type="Entities.TeleportingDoor" gid="873" x="127.909" y="-207.909" width="32" height="48">
|
||||||
|
<properties>
|
||||||
|
<property name="destination" type="object" value="32"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="32" type="Entities.TeleportingDoor" gid="873" x="703.909" y="127.909" width="32" height="48">
|
||||||
|
<properties>
|
||||||
|
<property name="destination" type="object" value="31"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="33" type="Entities.TeleportingDoor" gid="873" x="512" y="128.182" width="32" height="48">
|
||||||
|
<properties>
|
||||||
|
<property name="destination" type="object" value="34"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="34" type="Entities.TeleportingDoor" gid="873" x="703.909" y="-96.0909" width="32" height="48">
|
||||||
|
<properties>
|
||||||
|
<property name="destination" type="object" value="33"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="35" type="Entities.TeleportingDoor" gid="873" x="703.909" y="-208" width="32" height="48">
|
||||||
|
<properties>
|
||||||
|
<property name="nextLevel" type="bool" value="true"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="36" type="Entities.Door" gid="873" x="512" y="239.938" width="32" height="48"/>
|
||||||
|
<object id="37" type="Entities.Door" gid="873" x="224" y="-96.0909" width="32" height="48"/>
|
||||||
|
<object id="38" type="Entities.Door" gid="873" x="416" y="-208" width="32" height="48"/>
|
||||||
|
<object id="39" type="Entities.Door" gid="873" x="608" y="16" width="32" height="48"/>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="5" name="Monsters">
|
||||||
|
<object id="42" type="LivingEntities.Monsters.Spider" x="93" y="157">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="43" type="LivingEntities.Monsters.Slime" x="464" y="150">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="44" type="LivingEntities.Monsters.Zombie" x="227" y="220">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="45" type="LivingEntities.Monsters.Ghost" x="751" y="103">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="46" type="LivingEntities.Monsters.Zombie" x="559" y="107">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="47" type="LivingEntities.Monsters.Slime" x="131" y="41">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="48" type="LivingEntities.Monsters.Zombie" x="90" y="113">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="49" type="LivingEntities.Monsters.Zombie" x="85" y="-3">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="51" type="LivingEntities.Monsters.Zombie" x="658" y="-10">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="52" type="LivingEntities.Monsters.Spider" x="465" y="-71">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="53" type="LivingEntities.Monsters.Zombie" x="123" y="-116">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="54" type="LivingEntities.Monsters.Zombie" x="274" y="-113">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="55" type="LivingEntities.Monsters.Zombie" x="660" y="-120">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="56" type="LivingEntities.Monsters.Ghost" x="445" y="-126">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="57" type="LivingEntities.Monsters.Zombie" x="179" y="-228">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="58" type="LivingEntities.Monsters.Zombie" x="268" y="-229">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="59" type="LivingEntities.Monsters.Frank" x="549" y="-229">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
|
</map>
|
|
@ -71,5 +71,10 @@
|
||||||
<point/>
|
<point/>
|
||||||
</object>
|
</object>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
|
<objectgroup id="6" name="Слой объектов 1" class="LivingEntities.Monsters.Ghost">
|
||||||
|
<object id="5" x="150" y="200">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
|
|
||||||
</map>
|
</map>
|
||||||
|
|
Before Width: | Height: | Size: 464 KiB After Width: | Height: | Size: 464 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
@ -23,7 +23,7 @@ internal class DeathGUI : AbstractGui
|
||||||
Elements.Add(butMenu);
|
Elements.Add(butMenu);
|
||||||
butMenu.LeftButtonPressed += () =>
|
butMenu.LeftButtonPressed += () =>
|
||||||
{
|
{
|
||||||
AppManager.Instance.ChangeGameState(GameState.Menu);
|
AppManager.Instance.Restart("lvl");
|
||||||
};
|
};
|
||||||
foreach (var item in Elements)
|
foreach (var item in Elements)
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,7 +28,7 @@ namespace DangerousD.GameCore.GUI
|
||||||
|
|
||||||
public void Draw(SpriteBatch spriteBatch)
|
public void Draw(SpriteBatch spriteBatch)
|
||||||
{
|
{
|
||||||
var keysString = Join("\n", _text.Select(el => el.Key + ": " + el.Value).ToList());
|
/*var keysString = Join("\n", _text.Select(el => el.Key + ": " + el.Value).ToList());
|
||||||
spriteBatch.Begin();
|
spriteBatch.Begin();
|
||||||
spriteBatch.DrawString(
|
spriteBatch.DrawString(
|
||||||
_spriteFont,
|
_spriteFont,
|
||||||
|
@ -52,7 +52,7 @@ namespace DangerousD.GameCore.GUI
|
||||||
SpriteEffects.None,
|
SpriteEffects.None,
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
spriteBatch.End();
|
spriteBatch.End();*/
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Set(string key, string value)
|
public void Set(string key, string value)
|
||||||
|
|
|
@ -135,6 +135,7 @@ namespace DangerousD.GameCore.GUI
|
||||||
};
|
};
|
||||||
Elements.Add(joinByIpButton);
|
Elements.Add(joinByIpButton);
|
||||||
joinByIpButton.LeftButtonPressed += () => {
|
joinByIpButton.LeftButtonPressed += () => {
|
||||||
|
AppManager.Instance.ChangeGameState(GameState.Game);
|
||||||
AppManager.Instance.NetworkManager.ClientInit(searchBarTextBox.text);
|
AppManager.Instance.NetworkManager.ClientInit(searchBarTextBox.text);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace DangerousD.GameCore.GameObjects.Entities
|
||||||
Height = (int)size.Y;
|
Height = (int)size.Y;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override GraphicsComponent GraphicsComponent { get; } = new("doors");
|
protected override GraphicsComponent GraphicsComponent { get; } = new("door");
|
||||||
|
|
||||||
public override void Update(GameTime gameTime)
|
public override void Update(GameTime gameTime)
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,9 +36,9 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
|
|
||||||
public abstract void Move(GameTime gameTime);
|
public abstract void Move(GameTime gameTime);
|
||||||
|
|
||||||
public void TakeDamage(int damage)
|
public virtual void TakeDamage()
|
||||||
{
|
{
|
||||||
monster_health -= damage;
|
monster_health--;
|
||||||
if (monster_health <= 0)
|
if (monster_health <= 0)
|
||||||
{
|
{
|
||||||
Death();
|
Death();
|
||||||
|
|
|
@ -17,6 +17,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
private bool isFlyRight = true;
|
private bool isFlyRight = true;
|
||||||
private bool isFlyUp = true;
|
private bool isFlyUp = true;
|
||||||
private bool isAttacking = false;
|
private bool isAttacking = false;
|
||||||
|
private int hp;
|
||||||
|
|
||||||
public Rectangle Collision
|
public Rectangle Collision
|
||||||
{
|
{
|
||||||
|
@ -32,6 +33,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
monster_speed = 3;
|
monster_speed = 3;
|
||||||
velocity = new Vector2(3,-3);
|
velocity = new Vector2(3,-3);
|
||||||
acceleration = Vector2.Zero;
|
acceleration = Vector2.Zero;
|
||||||
|
hp = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "BallMoveRight" }, "BallMoveRight");
|
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "BallMoveRight" }, "BallMoveRight");
|
||||||
|
@ -39,7 +41,9 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
public override void Update(GameTime gameTime)
|
public override void Update(GameTime gameTime)
|
||||||
{
|
{
|
||||||
Move(gameTime);
|
Move(gameTime);
|
||||||
AppManager.Instance.DebugHUD.Set(name, velocity.ToString());
|
|
||||||
|
Death();
|
||||||
|
|
||||||
base.Update(gameTime);
|
base.Update(gameTime);
|
||||||
}
|
}
|
||||||
public override void Attack()
|
public override void Attack()
|
||||||
|
@ -60,7 +64,10 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
|
|
||||||
public override void Death()
|
public override void Death()
|
||||||
{
|
{
|
||||||
|
if (hp <= 0)
|
||||||
|
{
|
||||||
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Move(GameTime gameTime)
|
public override void Move(GameTime gameTime)
|
||||||
|
@ -75,6 +82,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
{
|
{
|
||||||
isFlyRight = false;
|
isFlyRight = false;
|
||||||
velocity.X = -velocity.X;
|
velocity.X = -velocity.X;
|
||||||
|
hp--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -84,6 +92,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
{
|
{
|
||||||
isFlyRight = true;
|
isFlyRight = true;
|
||||||
velocity.X = -velocity.X;
|
velocity.X = -velocity.X;
|
||||||
|
hp--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isFlyUp)
|
if (isFlyUp)
|
||||||
|
@ -94,6 +103,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
{
|
{
|
||||||
isFlyUp = false;
|
isFlyUp = false;
|
||||||
velocity.Y = -velocity.Y;
|
velocity.Y = -velocity.Y;
|
||||||
|
hp--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -103,6 +113,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
{
|
{
|
||||||
isFlyUp = true;
|
isFlyUp = true;
|
||||||
velocity.Y = -velocity.Y;
|
velocity.Y = -velocity.Y;
|
||||||
|
hp--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,11 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
isGoRight = true;
|
isGoRight = true;
|
||||||
monster_speed = 3;
|
monster_speed = 3;
|
||||||
name = "Ghost";
|
name = "Ghost";
|
||||||
Width = 48;
|
Width = 24;
|
||||||
Height = 62;
|
Height = 30;
|
||||||
GraphicsComponent.StartAnimation("GhostSpawn");
|
GraphicsComponent.StartAnimation("GhostSpawn");
|
||||||
acceleration = Vector2.Zero;
|
acceleration = new Vector2(0,1);
|
||||||
|
monster_health = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "GhostMoveRight", "GhostMoveLeft", "GhostSpawn", "GhostAttack" }, "GhostMoveRight");
|
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "GhostMoveRight", "GhostMoveLeft", "GhostSpawn", "GhostAttack" }, "GhostMoveRight");
|
||||||
|
@ -38,13 +38,32 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
|
|
||||||
public override void Attack()
|
public override void Attack()
|
||||||
{
|
{
|
||||||
|
velocity.X = 0;
|
||||||
|
isAttack = true;
|
||||||
|
if (GraphicsComponent.GetCurrentAnimation != "GhostAttack")
|
||||||
|
{
|
||||||
|
GraphicsComponent.StartAnimation("GhostAttack");
|
||||||
|
}
|
||||||
|
|
||||||
|
AppManager.Instance.GameManager.players[0].Death(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Death()
|
public override void Death()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public override void OnCollision(GameObject gameObject)
|
||||||
|
{
|
||||||
|
if (gameObject is Player)
|
||||||
|
{
|
||||||
|
if (AppManager.Instance.GameManager.players[0].IsAlive)
|
||||||
|
{
|
||||||
|
Attack();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
base.OnCollision(gameObject);
|
||||||
|
}
|
||||||
|
|
||||||
public override void Move(GameTime gameTime)
|
public override void Move(GameTime gameTime)
|
||||||
{
|
{
|
||||||
|
@ -64,17 +83,24 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
}
|
}
|
||||||
velocity.X = -monster_speed;
|
velocity.X = -monster_speed;
|
||||||
}
|
}
|
||||||
if (Pos.X >= rightBoarder)
|
var getCols = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)Pos.Y + Height / 2 - 2, 50, 2));
|
||||||
|
if (isGoRight)
|
||||||
{
|
{
|
||||||
isGoRight = false;
|
getCols = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)Pos.Y + Height / 2 - 2, Width + 4, 2));
|
||||||
}
|
}
|
||||||
else if (Pos.X <= leftBoarder)
|
else
|
||||||
{
|
{
|
||||||
isGoRight = true;
|
getCols = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X - 3, (int)Pos.Y + Height / 2 - 2, Width + 3, 2));
|
||||||
}
|
}
|
||||||
if (true)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
foreach (var item in getCols)
|
||||||
|
{
|
||||||
|
if (item is MapObject)
|
||||||
|
{
|
||||||
|
isGoRight = !isGoRight;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +108,16 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public void TakeDamage()
|
||||||
|
{
|
||||||
|
monster_health--;
|
||||||
|
|
||||||
|
|
||||||
|
if (monster_health <= 0)
|
||||||
|
{
|
||||||
|
Death();
|
||||||
|
}
|
||||||
|
}
|
||||||
public void Target()
|
public void Target()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
|
|
|
@ -173,7 +173,11 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
}
|
}
|
||||||
public override void Death()
|
public override void Death()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Particle particle = new Particle(Pos);
|
||||||
|
|
||||||
|
|
||||||
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Move(GameTime gameTime)
|
public override void Move(GameTime gameTime)
|
||||||
|
@ -220,7 +224,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
velocity.X = -monster_speed;
|
velocity.X = -monster_speed;
|
||||||
|
|
||||||
}
|
}
|
||||||
var getCols= AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)Pos.Y + Height / 2 - 2, 50, 2)); ;
|
var getCols= AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)Pos.Y + Height / 2 - 2, 50, 2));
|
||||||
if (isGoRight)
|
if (isGoRight)
|
||||||
{
|
{
|
||||||
getCols = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)Pos.Y + Height / 2 - 2, 51, 2));
|
getCols = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)Pos.Y + Height / 2 - 2, 51, 2));
|
||||||
|
@ -348,5 +352,15 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
}
|
}
|
||||||
base.OnCollision(gameObject);
|
base.OnCollision(gameObject);
|
||||||
}
|
}
|
||||||
|
public void TakeDamage()
|
||||||
|
{
|
||||||
|
monster_health--;
|
||||||
|
|
||||||
|
Particle particle = new Particle(Pos);
|
||||||
|
if (monster_health <= 0)
|
||||||
|
{
|
||||||
|
Death();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,24 +12,33 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
{
|
{
|
||||||
public class Werewolf : CoreEnemy
|
public class Werewolf : CoreEnemy
|
||||||
{
|
{
|
||||||
private bool isAttack;
|
private bool isJump;
|
||||||
|
int delay;
|
||||||
|
|
||||||
public Werewolf(Vector2 position) : base(position)
|
public Werewolf(Vector2 position) : base(position)
|
||||||
{
|
{
|
||||||
name = "Wolf";
|
name = "Wolf";
|
||||||
monster_speed = 4;
|
monster_speed = 3;
|
||||||
Width = 78;
|
Width = 39;
|
||||||
Height = 96;
|
Height = 48;
|
||||||
|
delay = 10;
|
||||||
|
monster_health = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "WolfMoveRight", "WolfMoveLeft", "WolfJumpRight", "WolfJumpLeft" }, "WolfMoveRight");
|
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "WolfMoveRight", "WolfMoveLeft", "WolfJumpRight", "WolfJumpLeft" }, "WolfMoveRight");
|
||||||
|
|
||||||
public override void Update(GameTime gameTime)
|
public override void Update(GameTime gameTime)
|
||||||
{
|
{
|
||||||
if (!isAttack)
|
if(!isJump )
|
||||||
|
{
|
||||||
|
Jump();
|
||||||
|
}
|
||||||
|
if(isOnGround)
|
||||||
{
|
{
|
||||||
Move(gameTime);
|
Move(gameTime);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
base.Update(gameTime);
|
base.Update(gameTime);
|
||||||
}
|
}
|
||||||
|
@ -41,11 +50,18 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
|
|
||||||
public override void Death()
|
public override void Death()
|
||||||
{
|
{
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
Particle particle = new Particle(Pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Move(GameTime gameTime)
|
public override void Move(GameTime gameTime)
|
||||||
{
|
{
|
||||||
|
isJump = false;
|
||||||
|
|
||||||
if (isGoRight)
|
if (isGoRight)
|
||||||
{
|
{
|
||||||
if (GraphicsComponent.GetCurrentAnimation != "WolfMoveRight")
|
if (GraphicsComponent.GetCurrentAnimation != "WolfMoveRight")
|
||||||
|
@ -62,23 +78,89 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
}
|
}
|
||||||
velocity.X = -monster_speed;
|
velocity.X = -monster_speed;
|
||||||
}
|
}
|
||||||
if (Pos.X >= rightBoarder)
|
var getCols = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)Pos.Y + Height / 2 - 2, 50, 2));
|
||||||
|
if (isGoRight)
|
||||||
{
|
{
|
||||||
isGoRight = false;
|
getCols = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)Pos.Y + Height / 2 - 2, Width+4, 2));
|
||||||
}
|
}
|
||||||
else if (Pos.X <= leftBoarder)
|
else
|
||||||
{
|
{
|
||||||
isGoRight = true;
|
getCols = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X - 3, (int)Pos.Y + Height / 2 - 2, Width +3, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
foreach (var item in getCols)
|
||||||
|
{
|
||||||
|
if (item is MapObject)
|
||||||
|
{
|
||||||
|
isGoRight = !isGoRight;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Attack(GameTime gameTime)
|
public override void Attack(GameTime gameTime)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
public void Jump()
|
||||||
|
{
|
||||||
|
var getCols = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)Pos.Y + Height / 2 - 2, 50, 2));
|
||||||
|
if (isGoRight)
|
||||||
|
{
|
||||||
|
getCols= AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)Pos.Y, Width+100, Height),false);
|
||||||
|
if(getCols.Count > 0)
|
||||||
|
{
|
||||||
|
isJump = true;
|
||||||
|
if (GraphicsComponent.GetCurrentAnimation != "WolfJumpRight")
|
||||||
|
{
|
||||||
|
GraphicsComponent.StartAnimation("WolfJumpRight");
|
||||||
|
}
|
||||||
|
velocity.Y = -7;
|
||||||
|
velocity.X = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
getCols = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X-100, (int)Pos.Y, 100, Height), false);
|
||||||
|
if (getCols.Count > 0)
|
||||||
|
{
|
||||||
|
isJump = true;
|
||||||
|
if (GraphicsComponent.GetCurrentAnimation != "WolfJumpLeft")
|
||||||
|
{
|
||||||
|
GraphicsComponent.StartAnimation("WolfJumpLeft");
|
||||||
|
}
|
||||||
|
velocity.Y = -7;
|
||||||
|
velocity.X = -6;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public override void OnCollision(GameObject gameObject)
|
||||||
|
{
|
||||||
|
/*/if (gameObject is Player)
|
||||||
|
{
|
||||||
|
if (AppManager.Instance.GameManager.players[0].IsAlive)
|
||||||
|
{
|
||||||
|
AppManager.Instance.GameManager.players[0].Death(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
base.OnCollision(gameObject);/*/
|
||||||
|
}
|
||||||
public void Target()
|
public void Target()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
public void TakeDamage()
|
||||||
|
{
|
||||||
|
monster_health--;
|
||||||
|
|
||||||
|
Particle particle = new Particle(Pos);
|
||||||
|
if (monster_health <= 0)
|
||||||
|
{
|
||||||
|
Death();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
{
|
{
|
||||||
public class Zombie : CoreEnemy
|
public class Zombie : CoreEnemy
|
||||||
{
|
{
|
||||||
private bool isAttack;
|
|
||||||
|
|
||||||
float leftBorder;
|
float leftBorder;
|
||||||
float rightBorder;
|
float rightBorder;
|
||||||
|
@ -32,6 +31,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
rightBorder = (int)position.X + 100;
|
rightBorder = (int)position.X + 100;
|
||||||
physicsManager = new PhysicsManager();
|
physicsManager = new PhysicsManager();
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
|
monster_health = 2;
|
||||||
if(random.Next(0, 2) == 0)
|
if(random.Next(0, 2) == 0)
|
||||||
{
|
{
|
||||||
isGoRight = true;
|
isGoRight = true;
|
||||||
|
@ -58,18 +58,19 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
Target();
|
Target();
|
||||||
Move(gameTime);
|
Move(gameTime);
|
||||||
}
|
}
|
||||||
fixBorder();
|
//fixBorder();
|
||||||
base.Update(gameTime);
|
base.Update(gameTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Attack()
|
public override void Attack()
|
||||||
{
|
{
|
||||||
AppManager.Instance.GameManager.GetPlayer1.Death(name);
|
isAttaking = true;
|
||||||
|
PlayAttackAnimation();
|
||||||
|
AppManager.Instance.GameManager.GetClosestPlayer(Pos).Death(name);
|
||||||
}
|
}
|
||||||
public void PlayAttackAnimation()
|
public void PlayAttackAnimation()
|
||||||
{
|
{
|
||||||
velocity.X = 0;
|
velocity.X = 0;
|
||||||
isAttaking = true;
|
|
||||||
if (isGoRight)
|
if (isGoRight)
|
||||||
{
|
{
|
||||||
if (GraphicsComponent.GetCurrentAnimation != "ZombieRightAttack")
|
if (GraphicsComponent.GetCurrentAnimation != "ZombieRightAttack")
|
||||||
|
@ -123,7 +124,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
}
|
}
|
||||||
public override void OnCollision(GameObject gameObject)
|
public override void OnCollision(GameObject gameObject)
|
||||||
{
|
{
|
||||||
if (gameObject.id == AppManager.Instance.GameManager.GetPlayer1.id && AppManager.Instance.GameManager.GetPlayer1.IsAlive)
|
if (gameObject.id == AppManager.Instance.GameManager.GetClosestPlayer(Pos).id && AppManager.Instance.GameManager.GetClosestPlayer(Pos).IsAlive)
|
||||||
{
|
{
|
||||||
if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.Client)
|
if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.Client)
|
||||||
{
|
{
|
||||||
|
@ -183,7 +184,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
public override void Attack(GameTime gameTime)
|
public override void Attack(GameTime gameTime)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
public void TakeDamage()
|
public override void TakeDamage()
|
||||||
{
|
{
|
||||||
if (monster_health == 3)
|
if (monster_health == 3)
|
||||||
AppManager.Instance.SoundManager.StartSound("z3", Pos, Pos);
|
AppManager.Instance.SoundManager.StartSound("z3", Pos, Pos);
|
||||||
|
@ -192,7 +193,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities.Monsters
|
||||||
if (monster_health == 1)
|
if (monster_health == 1)
|
||||||
AppManager.Instance.SoundManager.StartSound("z3", Pos, Pos);
|
AppManager.Instance.SoundManager.StartSound("z3", Pos, Pos);
|
||||||
monster_health--;
|
monster_health--;
|
||||||
GraphicsComponent.StartAnimation("ZombieRightAttack");
|
|
||||||
Particle particle = new Particle(Pos);
|
Particle particle = new Particle(Pos);
|
||||||
if (monster_health <= 0)
|
if (monster_health <= 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,14 +25,15 @@ namespace DangerousD.GameCore.GameObjects.PlayerDeath
|
||||||
|
|
||||||
private void PlayDeath(string deathName)
|
private void PlayDeath(string deathName)
|
||||||
{
|
{
|
||||||
if (GraphicsComponent.GetCurrentAnimation != "DeathFromZombie")
|
//if (GraphicsComponent.GetCurrentAnimation != "DeathFromZombie")
|
||||||
{
|
//{
|
||||||
GraphicsComponent.StartAnimation("DeathFromZombie");
|
// GraphicsComponent.StartAnimation("DeathFromZombie");
|
||||||
}
|
//}
|
||||||
if (GraphicsComponent.GetCurrentAnimation != "DeathFromSilasHand")
|
//if (GraphicsComponent.GetCurrentAnimation != "DeathFromSilasHand")
|
||||||
{
|
//{
|
||||||
GraphicsComponent.StartAnimation("DeathFromSilasHand");
|
// GraphicsComponent.StartAnimation("DeathFromSilasHand");
|
||||||
}
|
//}
|
||||||
|
GraphicsComponent.StartAnimation(deathName);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ using Microsoft.Xna.Framework.Input;
|
||||||
using Microsoft.Xna.Framework.Graphics;
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
using DangerousD.GameCore.GameObjects.LivingEntities.Monsters;
|
using DangerousD.GameCore.GameObjects.LivingEntities.Monsters;
|
||||||
using DangerousD.GameCore.Network;
|
using DangerousD.GameCore.Network;
|
||||||
|
using DangerousD.GameCore.GameObjects.MapObjects;
|
||||||
|
|
||||||
namespace DangerousD.GameCore.GameObjects.LivingEntities
|
namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
{
|
{
|
||||||
|
@ -66,6 +67,10 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
{
|
{
|
||||||
bullets++;
|
bullets++;
|
||||||
}
|
}
|
||||||
|
if(a == "playerShootBoomUpRight" || a == "playerShootBoomUpLeft")
|
||||||
|
{
|
||||||
|
isShooting = false;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +79,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
public bool IsAlive { get { return isAlive; } }
|
public bool IsAlive { get { return isAlive; } }
|
||||||
|
|
||||||
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "playerMoveLeft", "playerMoveRight", "DeathFromZombie", "playerRightStay", "playerStayLeft",
|
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "playerMoveLeft", "playerMoveRight", "DeathFromZombie", "playerRightStay", "playerStayLeft",
|
||||||
"playerJumpRight" , "playerJumpLeft", "playerShootLeft", "playerShootRight", "playerReload", "smokeAfterShoot", "playerShootUpRight", "playerShootUpLeft"}, "playerReload");
|
"playerJumpRight" , "playerJumpLeft", "playerShootLeft", "playerShootRight", "playerReload", "smokeAfterShoot", "playerShootUpRight", "playerShootUpLeft", "playerShootBoomUpRight",
|
||||||
|
"playerShootBoomUpLeft"}, "playerReload");
|
||||||
|
|
||||||
public void Attack()
|
public void Attack()
|
||||||
{
|
{
|
||||||
|
@ -90,10 +96,10 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
}
|
}
|
||||||
public Rectangle GetShootRectangle(bool isRight)
|
public Rectangle GetShootRectangle(bool isRight)
|
||||||
{
|
{
|
||||||
if (isRight)
|
if (isRight)
|
||||||
return new Rectangle((int)Pos.X, (int)(Pos.Y) + 10, shootLength + Width, Height / 2);
|
return new Rectangle((int)Pos.X, (int)(Pos.Y) + 10, shootLength + Width, Height / 2);
|
||||||
else
|
else
|
||||||
return new Rectangle((int)Pos.X-shootLength, (int)(Pos.Y) + 10, shootLength, Height / 2);
|
return new Rectangle((int)Pos.X - shootLength, (int)(Pos.Y) + 10, shootLength, Height / 2);
|
||||||
}
|
}
|
||||||
public override void Draw(SpriteBatch spriteBatch)
|
public override void Draw(SpriteBatch spriteBatch)
|
||||||
{
|
{
|
||||||
|
@ -119,7 +125,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
isAttacked = true;
|
isAttacked = true;
|
||||||
if(monsterName == "Zombie")
|
if (monsterName == "Zombie")
|
||||||
{
|
{
|
||||||
AnimationRectangle deathRectangle = new AnimationRectangle(Pos, "DeathFrom" + monsterName);
|
AnimationRectangle deathRectangle = new AnimationRectangle(Pos, "DeathFrom" + monsterName);
|
||||||
deathRectangle.Gr.actionOfAnimationEnd += (a) =>
|
deathRectangle.Gr.actionOfAnimationEnd += (a) =>
|
||||||
|
@ -130,7 +136,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if(monsterName == "Spider")
|
else if (monsterName == "Spider")
|
||||||
{
|
{
|
||||||
AnimationRectangle deathRectangle = new AnimationRectangle(Pos, "DeathFrom" + monsterName);
|
AnimationRectangle deathRectangle = new AnimationRectangle(Pos, "DeathFrom" + monsterName);
|
||||||
deathRectangle.Gr.actionOfAnimationEnd += (a) =>
|
deathRectangle.Gr.actionOfAnimationEnd += (a) =>
|
||||||
|
@ -186,41 +192,37 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
bullets--;
|
bullets--;
|
||||||
if (isRight)
|
if (isRight)
|
||||||
{
|
{
|
||||||
StartCicycleAnimation("playerShootRight");
|
if (!isUping)
|
||||||
var targets = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X, (int)(Pos.Y - 10f), shootLength + 24, 10), typeof(Zombie)).OrderBy(x => (x.Pos - Pos).LengthSquared());
|
|
||||||
if (targets.Count() > 0)
|
|
||||||
{
|
{
|
||||||
Zombie targetZombie = (Zombie)targets.First();
|
StartCicycleAnimation("playerShootRight");
|
||||||
targetZombie.TakeDamage();
|
Bullet bullet = new Bullet(new Vector2(Pos.X + 16, Pos.Y));
|
||||||
|
bullet.ShootRight();
|
||||||
|
SmokeAfterShoot smokeAfterShoot = new SmokeAfterShoot(new Vector2(Pos.X + 12, Pos.Y - 8));
|
||||||
}
|
}
|
||||||
targets = AppManager.Instance.GameManager.physicsManager.CheckRectangle(GetShootRectangle(isRight), typeof(SilasHands)).OrderBy(x => (x.Pos - Pos).LengthSquared());
|
else
|
||||||
if (targets.Count() > 0)
|
|
||||||
{
|
{
|
||||||
SilasHands targetHand = (SilasHands)targets.First();
|
StartCicycleAnimation("playerShootBoomUpRight");
|
||||||
targetHand.TakeDamage();
|
Bullet bullet = new Bullet(new Vector2(Pos.X + 16, Pos.Y));
|
||||||
|
bullet.ShootUpRight();
|
||||||
|
SmokeAfterShoot smokeAfterShoot = new SmokeAfterShoot(new Vector2(Pos.X + 12, Pos.Y - 8));
|
||||||
}
|
}
|
||||||
SmokeAfterShoot smokeAfterShoot = new SmokeAfterShoot(new Vector2(Pos.X + 30, Pos.Y + 7));
|
|
||||||
}
|
}
|
||||||
else
|
else if(!isRight)
|
||||||
{
|
{
|
||||||
StartCicycleAnimation("playerShootLeft");
|
if (!isUping)
|
||||||
var targets = AppManager.Instance.GameManager.physicsManager.CheckRectangle(new Rectangle((int)Pos.X - shootLength, (int)(Pos.Y - 10f), shootLength, 10), typeof(Zombie));
|
|
||||||
if (targets != null)
|
|
||||||
{
|
{
|
||||||
foreach (var target in targets)
|
StartCicycleAnimation("playerShootBoomUpLeft");
|
||||||
{
|
Bullet bullet = new Bullet(new Vector2(Pos.X, Pos.Y));
|
||||||
Zombie targetZombie = (Zombie)target;
|
bullet.ShootLeft();
|
||||||
targetZombie.TakeDamage();
|
SmokeAfterShoot smokeAfterShoot = new SmokeAfterShoot(new Vector2(Pos.X - 6, Pos.Y - 7));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
targets = AppManager.Instance.GameManager.physicsManager.CheckRectangle(GetShootRectangle(isRight), typeof(SilasHands));
|
else
|
||||||
if (targets.Count() > 0)
|
|
||||||
{
|
{
|
||||||
SilasHands targetHand = (SilasHands)targets.First();
|
StartCicycleAnimation("playerShootBoomUpLeft");
|
||||||
targetHand.TakeDamage();
|
Bullet bullet = new Bullet(new Vector2(Pos.X, Pos.Y));
|
||||||
|
bullet.ShootUpLeft();
|
||||||
|
SmokeAfterShoot smokeAfterShoot = new SmokeAfterShoot(new Vector2(Pos.X - 6, Pos.Y - 7));
|
||||||
}
|
}
|
||||||
SmokeAfterShoot smokeAfterShoot = new SmokeAfterShoot(new Vector2(Pos.X - 12, Pos.Y + 7));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -241,7 +243,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
FallingThroughPlatform = false;
|
FallingThroughPlatform = false;
|
||||||
}
|
}
|
||||||
GraphicsComponent.SetCameraPosition(Pos);
|
GraphicsComponent.SetCameraPosition(Pos);
|
||||||
if (!isAttacked || AppManager.Instance.InputManager.InvincibilityCheat)
|
if (!isAttacked || AppManager.Instance.InputManager.InvincibilityCheat)
|
||||||
{
|
{
|
||||||
if (!isShooting)
|
if (!isShooting)
|
||||||
{
|
{
|
||||||
|
@ -284,14 +286,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
}
|
}
|
||||||
else if (AppManager.Instance.InputManager.VectorMovementDirection.X == 0)//стоит
|
else if (AppManager.Instance.InputManager.VectorMovementDirection.X == 0)//стоит
|
||||||
{
|
{
|
||||||
if(bullets < 5)
|
if (isRight)
|
||||||
{
|
|
||||||
if (GraphicsComponent.GetCurrentAnimation != "playerReload")
|
|
||||||
{
|
|
||||||
GraphicsComponent.StartAnimation("playerReload");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (isRight)
|
|
||||||
{
|
{
|
||||||
if (isUping)
|
if (isUping)
|
||||||
{
|
{
|
||||||
|
@ -300,6 +295,13 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
GraphicsComponent.StartAnimation("playerShootUpRight");
|
GraphicsComponent.StartAnimation("playerShootUpRight");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (bullets < 5)
|
||||||
|
{
|
||||||
|
if (GraphicsComponent.GetCurrentAnimation != "playerReload")
|
||||||
|
{
|
||||||
|
GraphicsComponent.StartAnimation("playerReload");
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GraphicsComponent.StartAnimation("playerRightStay");
|
GraphicsComponent.StartAnimation("playerRightStay");
|
||||||
|
@ -314,6 +316,13 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
GraphicsComponent.StartAnimation("playerShootUpLeft");
|
GraphicsComponent.StartAnimation("playerShootUpLeft");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (bullets < 5)
|
||||||
|
{
|
||||||
|
if (GraphicsComponent.GetCurrentAnimation != "playerReload")
|
||||||
|
{
|
||||||
|
GraphicsComponent.StartAnimation("playerReload");
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GraphicsComponent.StartAnimation("playerStayLeft");
|
GraphicsComponent.StartAnimation("playerStayLeft");
|
||||||
|
@ -321,11 +330,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.SinglePlayer)
|
|
||||||
{
|
|
||||||
NetworkTask task = new NetworkTask(id, Pos);
|
|
||||||
AppManager.Instance.NetworkTasks.Add(task);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public void MoveDown()
|
public void MoveDown()
|
||||||
{
|
{
|
||||||
|
@ -333,13 +337,89 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
|
||||||
isOnGround = false;
|
isOnGround = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Bullet : GameObjects.LivingEntity
|
public class Bullet : LivingEntity
|
||||||
{
|
{
|
||||||
public Bullet(Vector2 position) : base(position)
|
public Bullet(Vector2 position) : base(position)
|
||||||
{
|
{
|
||||||
|
Height = 5;
|
||||||
|
Width = 5;
|
||||||
|
}
|
||||||
|
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "playerMoveLeft" }, "playerMoveLeft");
|
||||||
|
Vector2 direction;
|
||||||
|
Vector2 maindirection;
|
||||||
|
public void ShootUpRight()
|
||||||
|
{
|
||||||
|
direction = new Vector2(1, -1);
|
||||||
|
acceleration = Vector2.Zero;
|
||||||
|
velocity = new Vector2(10, 10) * direction;
|
||||||
|
maindirection = velocity;
|
||||||
|
if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Client)
|
||||||
|
{
|
||||||
|
NetworkTask task = new NetworkTask(typeof(Bullet), Pos, id, velocity);
|
||||||
|
AppManager.Instance.NetworkTasks.Add(task);
|
||||||
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void ShootRight()
|
||||||
|
{
|
||||||
|
direction = new Vector2(1, 0);
|
||||||
|
acceleration = Vector2.Zero;
|
||||||
|
velocity = new Vector2(10, 10) * direction;
|
||||||
|
maindirection = velocity;
|
||||||
|
if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Client)
|
||||||
|
{
|
||||||
|
NetworkTask task = new NetworkTask(typeof(Bullet), Pos, id, velocity);
|
||||||
|
AppManager.Instance.NetworkTasks.Add(task);
|
||||||
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void ShootLeft()
|
||||||
|
{
|
||||||
|
direction = new Vector2(-1, 0);
|
||||||
|
acceleration = Vector2.Zero;
|
||||||
|
velocity = new Vector2(10, 10) * direction;
|
||||||
|
maindirection = velocity;
|
||||||
|
if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Client)
|
||||||
|
{
|
||||||
|
NetworkTask task = new NetworkTask(typeof(Bullet), Pos, id, velocity);
|
||||||
|
AppManager.Instance.NetworkTasks.Add(task);
|
||||||
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void ShootUpLeft()
|
||||||
|
{
|
||||||
|
direction = new Vector2(-1, -1);
|
||||||
|
acceleration = Vector2.Zero;
|
||||||
|
velocity = new Vector2(10, 10) * direction;
|
||||||
|
maindirection = velocity;
|
||||||
|
if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Client)
|
||||||
|
{
|
||||||
|
NetworkTask task = new NetworkTask(typeof(Bullet), Pos, id, velocity);
|
||||||
|
AppManager.Instance.NetworkTasks.Add(task);
|
||||||
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public override void OnCollision(GameObject gameObject)
|
||||||
|
{
|
||||||
|
if (gameObject is not Player)
|
||||||
|
{
|
||||||
|
if (gameObject is CoreEnemy)
|
||||||
|
{
|
||||||
|
CoreEnemy enemy = (CoreEnemy)gameObject;
|
||||||
|
enemy.TakeDamage();
|
||||||
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
|
}
|
||||||
|
base.OnCollision(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public override void Update(GameTime gameTime)
|
||||||
|
{
|
||||||
|
if (maindirection != velocity)
|
||||||
|
{
|
||||||
|
AppManager.Instance.GameManager.Remove(this);
|
||||||
|
}
|
||||||
|
base.Update(gameTime);
|
||||||
}
|
}
|
||||||
protected override GraphicsComponent GraphicsComponent { get; } = new("ZombieMoveLeft");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,6 +10,8 @@ public abstract class LivingEntity : Entity
|
||||||
public Vector2 velocity;
|
public Vector2 velocity;
|
||||||
public Vector2 acceleration;
|
public Vector2 acceleration;
|
||||||
|
|
||||||
|
public Vector2 Acceleration { get; private set; }
|
||||||
|
|
||||||
public LivingEntity(Vector2 position) : base(position)
|
public LivingEntity(Vector2 position) : base(position)
|
||||||
{
|
{
|
||||||
acceleration = new Vector2(0, 30);
|
acceleration = new Vector2(0, 30);
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace DangerousD.GameCore
|
||||||
public class AppManager : Game
|
public class AppManager : Game
|
||||||
{
|
{
|
||||||
public static AppManager Instance { get; private set; }
|
public static AppManager Instance { get; private set; }
|
||||||
public string IpAddress { get; private set; } = "127.0.0.1";
|
public string IpAddress { get; private set; } = "0.0.0.0";
|
||||||
private GraphicsDeviceManager _graphics;
|
private GraphicsDeviceManager _graphics;
|
||||||
private SpriteBatch _spriteBatch;
|
private SpriteBatch _spriteBatch;
|
||||||
public GameState gameState { get; private set; }
|
public GameState gameState { get; private set; }
|
||||||
|
@ -39,7 +39,7 @@ namespace DangerousD.GameCore
|
||||||
IDrawableObject HUD;
|
IDrawableObject HUD;
|
||||||
public DebugHUD DebugHUD;
|
public DebugHUD DebugHUD;
|
||||||
public List<NetworkTask> NetworkTasks = new List<NetworkTask>();
|
public List<NetworkTask> NetworkTasks = new List<NetworkTask>();
|
||||||
|
public string currentMap;
|
||||||
public GameManager GameManager { get; private set; } = new();
|
public GameManager GameManager { get; private set; } = new();
|
||||||
public AnimationBuilder AnimationBuilder { get; private set; } = new AnimationBuilder();
|
public AnimationBuilder AnimationBuilder { get; private set; } = new AnimationBuilder();
|
||||||
public NetworkManager NetworkManager { get; private set; } = new NetworkManager();
|
public NetworkManager NetworkManager { get; private set; } = new NetworkManager();
|
||||||
|
@ -77,6 +77,7 @@ namespace DangerousD.GameCore
|
||||||
DebugHUD = new DebugHUD();
|
DebugHUD = new DebugHUD();
|
||||||
UIManager.resolution = resolution;
|
UIManager.resolution = resolution;
|
||||||
UIManager.resolutionInGame = inGameResolution;
|
UIManager.resolutionInGame = inGameResolution;
|
||||||
|
currentMap = "lvl";
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Initialize()
|
protected override void Initialize()
|
||||||
|
@ -139,6 +140,7 @@ namespace DangerousD.GameCore
|
||||||
case GameState.Game:
|
case GameState.Game:
|
||||||
HUD.Update(gameTime);
|
HUD.Update(gameTime);
|
||||||
GameManager.Update(gameTime);
|
GameManager.Update(gameTime);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -206,7 +208,7 @@ namespace DangerousD.GameCore
|
||||||
case GameState.Lobby:
|
case GameState.Lobby:
|
||||||
break;
|
break;
|
||||||
case GameState.Game:
|
case GameState.Game:
|
||||||
GameManager.mapManager.LoadLevel("lvl");
|
GameManager.mapManager.LoadLevel(currentMap);
|
||||||
GameManager.FindBorders();
|
GameManager.FindBorders();
|
||||||
break;
|
break;
|
||||||
case GameState.Death:
|
case GameState.Death:
|
||||||
|
@ -218,6 +220,7 @@ namespace DangerousD.GameCore
|
||||||
|
|
||||||
public void NetworkSync(List<NetworkTask> networkTasks)
|
public void NetworkSync(List<NetworkTask> networkTasks)
|
||||||
{
|
{
|
||||||
|
DebugHUD.Log("networksync");
|
||||||
foreach (NetworkTask networkTask in networkTasks)
|
foreach (NetworkTask networkTask in networkTasks)
|
||||||
{
|
{
|
||||||
switch (networkTask.operation)
|
switch (networkTask.operation)
|
||||||
|
@ -233,6 +236,12 @@ namespace DangerousD.GameCore
|
||||||
SoundManager.StartSound(networkTask.name, networkTask.position, GameManager.GetPlayer1.Pos);
|
SoundManager.StartSound(networkTask.name, networkTask.position, GameManager.GetPlayer1.Pos);
|
||||||
break;
|
break;
|
||||||
case NetworkTaskOperationEnum.CreateEntity:
|
case NetworkTaskOperationEnum.CreateEntity:
|
||||||
|
if (networkTask.type == typeof(Player.Bullet))
|
||||||
|
{
|
||||||
|
Player.Bullet bullet = new Player.Bullet(networkTask.position);
|
||||||
|
bullet.id = networkTask.objId;
|
||||||
|
bullet.velocity = networkTask.velocity;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case NetworkTaskOperationEnum.SendPosition:
|
case NetworkTaskOperationEnum.SendPosition:
|
||||||
if (networkTask.objId != GameManager.GetPlayer1.id )
|
if (networkTask.objId != GameManager.GetPlayer1.id )
|
||||||
|
@ -322,5 +331,11 @@ namespace DangerousD.GameCore
|
||||||
_graphics.IsFullScreen = fullscrin;
|
_graphics.IsFullScreen = fullscrin;
|
||||||
_graphics.ApplyChanges();
|
_graphics.ApplyChanges();
|
||||||
}
|
}
|
||||||
|
public void Restart(string map)
|
||||||
|
{
|
||||||
|
GameManager = new();
|
||||||
|
ChangeGameState(GameState.Menu);
|
||||||
|
currentMap = map;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,9 @@ namespace DangerousD.GameCore
|
||||||
public List<GameObject> otherObjects = new();
|
public List<GameObject> otherObjects = new();
|
||||||
public Vector4 CameraBorder;
|
public Vector4 CameraBorder;
|
||||||
public Player GetPlayer1 { get; private set; }
|
public Player GetPlayer1 { get; private set; }
|
||||||
|
private int _lastUpdate = 0;
|
||||||
|
private int _currTime = 0;
|
||||||
|
|
||||||
public GameManager()
|
public GameManager()
|
||||||
{
|
{
|
||||||
others = new List<GameObject>();
|
others = new List<GameObject>();
|
||||||
|
@ -130,10 +133,16 @@ namespace DangerousD.GameCore
|
||||||
|
|
||||||
public void Update(GameTime gameTime)
|
public void Update(GameTime gameTime)
|
||||||
{
|
{
|
||||||
|
_currTime += gameTime.ElapsedGameTime.Milliseconds;
|
||||||
if (AppManager.Instance.NetworkTasks.Count > 0)
|
if (AppManager.Instance.NetworkTasks.Count > 0)
|
||||||
{
|
{
|
||||||
AppManager.Instance.NetworkManager.SendMsg(AppManager.Instance.NetworkTasks.ToList());
|
if (_currTime - _lastUpdate > 50)
|
||||||
AppManager.Instance.NetworkTasks.Clear();
|
{
|
||||||
|
AppManager.Instance.DebugHUD.Log("sending");
|
||||||
|
AppManager.Instance.NetworkManager.SendMsg(AppManager.Instance.NetworkTasks.ToList());
|
||||||
|
AppManager.Instance.NetworkTasks.Clear();
|
||||||
|
_lastUpdate = _currTime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach (var item in BackgroundObjects)
|
foreach (var item in BackgroundObjects)
|
||||||
item.Update(gameTime);
|
item.Update(gameTime);
|
||||||
|
@ -194,5 +203,10 @@ namespace DangerousD.GameCore
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Player GetClosestPlayer(Vector2 position)
|
||||||
|
{
|
||||||
|
return players.OrderBy(x => (x.Pos - position).Length()).First();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -41,7 +41,7 @@ namespace DangerousD.GameCore.Managers
|
||||||
{
|
{
|
||||||
InstantiateTiles(layer, tileSize);
|
InstantiateTiles(layer, tileSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (XmlNode layer in xml.DocumentElement.SelectNodes("objectgroup"))
|
foreach (XmlNode layer in xml.DocumentElement.SelectNodes("objectgroup"))
|
||||||
{
|
{
|
||||||
InstantiateEntities(layer);
|
InstantiateEntities(layer);
|
||||||
|
@ -91,16 +91,20 @@ namespace DangerousD.GameCore.Managers
|
||||||
|
|
||||||
private void InstantiateEntities(XmlNode group)
|
private void InstantiateEntities(XmlNode group)
|
||||||
{
|
{
|
||||||
string entityGroup = group.Attributes["class"] is not null ? group.Attributes["class"].Value : "";
|
string entityGroup = group.Attributes["class"] is not null ? "." + group.Attributes["class"].Value : "";
|
||||||
|
Debug.Write(entityGroup);
|
||||||
float offsetX = group.Attributes["offsetx"] is not null ? float.Parse(group.Attributes["offsetx"].Value) : 0;
|
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;
|
float offsetY = group.Attributes["offsety"] is not null ? float.Parse(group.Attributes["offsety"].Value) : 0;
|
||||||
|
|
||||||
foreach (XmlNode entity in group.ChildNodes)
|
foreach (XmlNode entity in group.ChildNodes)
|
||||||
{
|
{
|
||||||
string entityType = entity.Attributes["type"] is not null ? "." + entity.Attributes["type"].Value : "";
|
string entityType = entity.Attributes["type"] is not null ? "." + entity.Attributes["type"].Value : "";
|
||||||
Type type = Type.GetType($"DangerousD.GameCore.GameObjects.{entityGroup}{entityType}");
|
Type type = Type.GetType($"DangerousD.GameCore.GameObjects{entityGroup}{entityType}");
|
||||||
|
|
||||||
Vector2 pos =
|
Vector2 pos =
|
||||||
new Vector2(float.Parse(entity.Attributes["x"].Value, CultureInfo.InvariantCulture) + offsetX,
|
new Vector2(float.Parse(entity.Attributes["x"].Value, CultureInfo.InvariantCulture) + offsetX,
|
||||||
float.Parse(entity.Attributes["y"].Value, CultureInfo.InvariantCulture) + offsetY) * _scale;
|
float.Parse(entity.Attributes["y"].Value, CultureInfo.InvariantCulture) + offsetY) * _scale;
|
||||||
|
|
||||||
Entity inst;
|
Entity inst;
|
||||||
if (type.Equals(typeof(Player)))
|
if (type.Equals(typeof(Player)))
|
||||||
{
|
{
|
||||||
|
@ -111,6 +115,30 @@ namespace DangerousD.GameCore.Managers
|
||||||
int gid = entity.Attributes["gid"] is not null ? int.Parse(entity.Attributes["gid"].Value) : 0;
|
int gid = entity.Attributes["gid"] is not null ? int.Parse(entity.Attributes["gid"].Value) : 0;
|
||||||
inst = (Entity)Activator.CreateInstance(type, pos, new Vector2(32, 48), new Rectangle((gid - 872)*32, 0, 32, 48));
|
inst = (Entity)Activator.CreateInstance(type, pos, new Vector2(32, 48), new Rectangle((gid - 872)*32, 0, 32, 48));
|
||||||
}
|
}
|
||||||
|
else if (type.Equals(typeof(TeleportingDoor)))
|
||||||
|
{
|
||||||
|
int gid = entity.Attributes["gid"] is not null ? int.Parse(entity.Attributes["gid"].Value) : 0;
|
||||||
|
XmlNode node = entity.SelectSingleNode("properties/property[@name = 'nextLevel']");
|
||||||
|
|
||||||
|
bool resetLevel = node is not null ? bool.Parse(node.Attributes["value"].Value) : false;
|
||||||
|
if (resetLevel)
|
||||||
|
{
|
||||||
|
inst = (Entity)Activator.CreateInstance(type, pos, new Vector2(32, 48), new Rectangle((gid - 872) * 32, 0, 32, 48),
|
||||||
|
new Vector2(0,0),
|
||||||
|
() => { });
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
node = entity.SelectSingleNode("properties/property[@name = 'destination']");
|
||||||
|
string target = node is not null ? node.Attributes["value"].Value : "0";
|
||||||
|
XmlNode dest = group.SelectSingleNode($"object[@id = '{target}']");
|
||||||
|
|
||||||
|
inst = (Entity)Activator.CreateInstance(type, pos, new Vector2(32, 48), new Rectangle((gid - 872) * 32, 0, 32, 48),
|
||||||
|
new Vector2(float.Parse(dest.Attributes["x"].Value, CultureInfo.InvariantCulture) + offsetX,
|
||||||
|
float.Parse(dest.Attributes["y"].Value, CultureInfo.InvariantCulture) + offsetY) * _scale,
|
||||||
|
() => { });
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
inst = (Entity)Activator.CreateInstance(type, pos);
|
inst = (Entity)Activator.CreateInstance(type, pos);
|
||||||
|
|
|
@ -21,27 +21,19 @@ namespace DangerousD.GameCore.Network
|
||||||
|
|
||||||
private void Init(string IpAddress)
|
private void Init(string IpAddress)
|
||||||
{
|
{
|
||||||
try
|
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||||
{
|
IPAddress address = IPAddress.Parse(IpAddress);
|
||||||
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
int port = 51873;
|
||||||
IPAddress address = IPAddress.Parse(IpAddress);
|
endPoint = new IPEndPoint(address, port);
|
||||||
int port = 51873;
|
|
||||||
endPoint = new IPEndPoint(address, port);
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
}
|
}
|
||||||
private void AcceptSockets()
|
private void AcceptSockets()
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
try
|
Socket clientSocket = socket.Accept();
|
||||||
{
|
clientSockets.Add(clientSocket);
|
||||||
Socket clientSocket = socket.Accept();
|
Thread receiveThread = new Thread(BeginHostReceive);
|
||||||
clientSockets.Add(clientSocket);
|
receiveThread.Start(clientSocket);
|
||||||
Thread receiveThread = new Thread(BeginHostReceive);
|
|
||||||
receiveThread.Start(clientSocket);
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,46 +42,41 @@ namespace DangerousD.GameCore.Network
|
||||||
Socket clientSocket = clSocket as Socket;
|
Socket clientSocket = clSocket as Socket;
|
||||||
while (clientSocket != null)
|
while (clientSocket != null)
|
||||||
{
|
{
|
||||||
try
|
byte[] bytesCount = new byte[4];
|
||||||
|
clientSocket.Receive(bytesCount);
|
||||||
|
int length = BitConverter.ToInt32(bytesCount);
|
||||||
|
byte[] Data = new byte[length];
|
||||||
|
StateObject so = new StateObject(clientSocket, Data);
|
||||||
|
while (so.UploadedBytesCount < length)
|
||||||
{
|
{
|
||||||
byte[] bytesCount = new byte[4];
|
int count = clientSocket.Receive(so.buffer, so.UploadedBytesCount, length - so.UploadedBytesCount, SocketFlags.None);
|
||||||
clientSocket.Receive(bytesCount);
|
so.UploadedBytesCount += count;
|
||||||
byte[] Data = new byte[BitConverter.ToInt32(bytesCount)];
|
|
||||||
StateObject so = new StateObject(clientSocket, Data);
|
|
||||||
IAsyncResult count = clientSocket.BeginReceive(so.buffer, 0, so.bufferSize, SocketFlags.None, AsyncReceiveCallback, so);
|
|
||||||
}
|
}
|
||||||
catch { }
|
List<NetworkTask> tasks = JsonConvert.DeserializeObject<List<NetworkTask>>(Encoding.Unicode.GetString(so.buffer, 0, length));
|
||||||
|
GetReceivingMessages(tasks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void HostInit(string IpAddress)
|
public void HostInit(string IpAddress)
|
||||||
{
|
{
|
||||||
try
|
Init(IpAddress);
|
||||||
{
|
socket.Bind(endPoint);
|
||||||
Init(IpAddress);
|
socket.Listen(4);
|
||||||
socket.Bind(endPoint);
|
Thread acceptThread = new Thread(AcceptSockets);
|
||||||
socket.Listen(4);
|
acceptThread.Start();
|
||||||
Thread acceptThread = new Thread(AcceptSockets);
|
state = "Host";
|
||||||
acceptThread.Start();
|
AppManager.Instance.SetMultiplayerState(MultiPlayerStatus.Host);
|
||||||
state = "Host";
|
|
||||||
AppManager.Instance.SetMultiplayerState(MultiPlayerStatus.Host);
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
}
|
}
|
||||||
public void ClientInit(string IpAddress)
|
public void ClientInit(string IpAddress)
|
||||||
{
|
{
|
||||||
try
|
Init(IpAddress);
|
||||||
{
|
socket.Connect(endPoint);
|
||||||
Init(IpAddress);
|
state = "Client";
|
||||||
socket.Connect(endPoint);
|
Thread.Sleep(10);
|
||||||
state = "Client";
|
Thread ReceivingThread = new Thread(ReceiveMsgFromHost);
|
||||||
Thread.Sleep(10);
|
ReceivingThread.Start();
|
||||||
Thread ReceivingThread = new Thread(ReceiveMsgFromHost);
|
NetworkTask connectionTask = new NetworkTask("Player");
|
||||||
ReceivingThread.Start();
|
AppManager.Instance.NetworkTasks.Add(connectionTask);
|
||||||
NetworkTask connectionTask = new NetworkTask("Player");
|
AppManager.Instance.SetMultiplayerState(MultiPlayerStatus.Client);
|
||||||
AppManager.Instance.NetworkTasks.Add(connectionTask);
|
|
||||||
AppManager.Instance.SetMultiplayerState(MultiPlayerStatus.Client);
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
}
|
}
|
||||||
public void SendMsg(List<NetworkTask> networkTask, Socket ignoreSocket = null)
|
public void SendMsg(List<NetworkTask> networkTask, Socket ignoreSocket = null)
|
||||||
{
|
{
|
||||||
|
@ -97,65 +84,38 @@ namespace DangerousD.GameCore.Network
|
||||||
int count = Data.Length;
|
int count = Data.Length;
|
||||||
if (state == "Host")
|
if (state == "Host")
|
||||||
{
|
{
|
||||||
try
|
foreach (Socket socket in clientSockets)
|
||||||
{
|
{
|
||||||
foreach (Socket socket in clientSockets)
|
if (!(socket == ignoreSocket))
|
||||||
{
|
{
|
||||||
if (!(socket == ignoreSocket))
|
socket.Send(BitConverter.GetBytes(count));
|
||||||
{
|
socket.Send(Data);
|
||||||
socket.Send(BitConverter.GetBytes(count));
|
|
||||||
socket.Send(Data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch { }
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
try
|
socket.Send(BitConverter.GetBytes(count));
|
||||||
{
|
socket.Send(Data);
|
||||||
socket.Send(BitConverter.GetBytes(count));
|
|
||||||
socket.Send(Data);
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void ReceiveMsgFromHost()
|
private void ReceiveMsgFromHost()
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
try
|
byte[] bytesCount = new byte[4];
|
||||||
|
socket.Receive(bytesCount);
|
||||||
|
int length = BitConverter.ToInt32(bytesCount);
|
||||||
|
byte[] Data = new byte[length];
|
||||||
|
StateObject so = new StateObject(socket, Data);
|
||||||
|
while (so.UploadedBytesCount < length)
|
||||||
{
|
{
|
||||||
byte[] bytesCount = new byte[4];
|
int count = socket.Receive(so.buffer, so.UploadedBytesCount, length-so.UploadedBytesCount, SocketFlags.None);
|
||||||
socket.Receive(bytesCount);
|
so.UploadedBytesCount += count;
|
||||||
byte[] Data = new byte[BitConverter.ToInt32(bytesCount)];
|
|
||||||
StateObject so = new StateObject(socket, Data);
|
|
||||||
IAsyncResult count = socket.BeginReceive(so.buffer, 0, so.bufferSize, SocketFlags.None, AsyncReceiveCallback, so);
|
|
||||||
}
|
}
|
||||||
catch { }
|
List<NetworkTask> tasks = JsonConvert.DeserializeObject<List<NetworkTask>>(Encoding.Unicode.GetString(so.buffer, 0, length));
|
||||||
|
GetReceivingMessages(tasks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AsyncReceiveCallback(IAsyncResult ar)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
StateObject so = ar.AsyncState as StateObject;
|
|
||||||
Socket clientSocket = so.workSocket;
|
|
||||||
int readCount = clientSocket.EndReceive(ar);
|
|
||||||
so.UploadedBytesCount += readCount;
|
|
||||||
so.sb.Append(Encoding.Unicode.GetString(so.buffer, 0, readCount));
|
|
||||||
if (so.UploadedBytesCount < so.bufferSize)
|
|
||||||
{
|
|
||||||
clientSocket.BeginReceive(so.buffer, 0, so.bufferSize, SocketFlags.None, new AsyncCallback(AsyncReceiveCallback), so);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
List<NetworkTask> tasks = JsonConvert.DeserializeObject<List<NetworkTask>>(so.sb.ToString());
|
|
||||||
GetReceivingMessages(tasks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,11 +38,12 @@ namespace DangerousD.GameCore.Network
|
||||||
/// <param name="EntityType"></param>
|
/// <param name="EntityType"></param>
|
||||||
/// <param name="EntityPosition"></param>
|
/// <param name="EntityPosition"></param>
|
||||||
/// <param name="ParentId"></param>
|
/// <param name="ParentId"></param>
|
||||||
public NetworkTask(Type EntityType, Vector2 EntityPosition, int ParentId)
|
public NetworkTask(Type EntityType, Vector2 EntityPosition, int ParentId, Vector2 velocity)
|
||||||
{
|
{
|
||||||
operation = NetworkTaskOperationEnum.CreateEntity;
|
operation = NetworkTaskOperationEnum.CreateEntity;
|
||||||
type = EntityType;
|
type = EntityType;
|
||||||
position = EntityPosition;
|
position = EntityPosition;
|
||||||
|
this.velocity = velocity;
|
||||||
objId = ParentId;
|
objId = ParentId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@ namespace DangerousD.GameCore.Network
|
||||||
public Socket workSocket;
|
public Socket workSocket;
|
||||||
public int bufferSize;
|
public int bufferSize;
|
||||||
public byte[] buffer;
|
public byte[] buffer;
|
||||||
public StringBuilder sb = new StringBuilder();
|
|
||||||
public int UploadedBytesCount;
|
public int UploadedBytesCount;
|
||||||
|
|
||||||
public StateObject(Socket socket, byte[] buffer)
|
public StateObject(Socket socket, byte[] buffer)
|
||||||
|
|
Loading…
Add table
Reference in a new issue