diff --git a/ZoFo/Content/Content.mgcb b/ZoFo/Content/Content.mgcb index 14c8973..ba94670 100644 --- a/ZoFo/Content/Content.mgcb +++ b/ZoFo/Content/Content.mgcb @@ -124,54 +124,54 @@ #begin Textures/Animations/player_left_idle.animation /copy:Textures/Animations/player_left_idle.animation -#begin Textures/Animations/player_look_down_weapon.animation -/copy:Textures/Animations/player_look_down_weapon.animation - #begin Textures/Animations/player_look_down.animation /copy:Textures/Animations/player_look_down.animation -#begin Textures/Animations/player_look_left_down_weapon.animation -/copy:Textures/Animations/player_look_left_down_weapon.animation - -#begin Textures/Animations/player_look_left_down.animation -/copy:Textures/Animations/player_look_left_down.animation - -#begin Textures/Animations/player_look_left_up_weapon.animation -/copy:Textures/Animations/player_look_left_up_weapon.animation - -#begin Textures/Animations/player_look_left_up.animation -/copy:Textures/Animations/player_look_left_up.animation - -#begin Textures/Animations/player_look_left_weapon.animation -/copy:Textures/Animations/player_look_left_weapon.animation +#begin Textures/Animations/player_look_down_weapon.animation +/copy:Textures/Animations/player_look_down_weapon.animation #begin Textures/Animations/player_look_left.animation /copy:Textures/Animations/player_look_left.animation -#begin Textures/Animations/player_look_right_down_weapon.animation -/copy:Textures/Animations/player_look_right_down_weapon.animation +#begin Textures/Animations/player_look_left_down.animation +/copy:Textures/Animations/player_look_left_down.animation -#begin Textures/Animations/player_look_right_down.animation -/copy:Textures/Animations/player_look_right_down.animation +#begin Textures/Animations/player_look_left_down_weapon.animation +/copy:Textures/Animations/player_look_left_down_weapon.animation -#begin Textures/Animations/player_look_right_up_weapon.animation -/copy:Textures/Animations/player_look_right_up_weapon.animation +#begin Textures/Animations/player_look_left_up.animation +/copy:Textures/Animations/player_look_left_up.animation -#begin Textures/Animations/player_look_right_up.animation -/copy:Textures/Animations/player_look_right_up.animation +#begin Textures/Animations/player_look_left_up_weapon.animation +/copy:Textures/Animations/player_look_left_up_weapon.animation -#begin Textures/Animations/player_look_right_weapon.animation -/copy:Textures/Animations/player_look_right_weapon.animation +#begin Textures/Animations/player_look_left_weapon.animation +/copy:Textures/Animations/player_look_left_weapon.animation #begin Textures/Animations/player_look_right.animation /copy:Textures/Animations/player_look_right.animation -#begin Textures/Animations/player_look_up_weapon.animation -/copy:Textures/Animations/player_look_up_weapon.animation +#begin Textures/Animations/player_look_right_down.animation +/copy:Textures/Animations/player_look_right_down.animation + +#begin Textures/Animations/player_look_right_down_weapon.animation +/copy:Textures/Animations/player_look_right_down_weapon.animation + +#begin Textures/Animations/player_look_right_up.animation +/copy:Textures/Animations/player_look_right_up.animation + +#begin Textures/Animations/player_look_right_up_weapon.animation +/copy:Textures/Animations/player_look_right_up_weapon.animation + +#begin Textures/Animations/player_look_right_weapon.animation +/copy:Textures/Animations/player_look_right_weapon.animation #begin Textures/Animations/player_look_up.animation /copy:Textures/Animations/player_look_up.animation +#begin Textures/Animations/player_look_up_weapon.animation +/copy:Textures/Animations/player_look_up_weapon.animation + #begin Textures/Animations/player_right_idle.animation /copy:Textures/Animations/player_right_idle.animation @@ -196,6 +196,21 @@ #begin Textures/Animations/testAnimationExample.animation /copy:Textures/Animations/testAnimationExample.animation +#begin Textures/Animations/zombie_attack.animation +/copy:Textures/Animations/zombie_attack.animation + +#begin Textures/Animations/zombie_damaged.animation +/copy:Textures/Animations/zombie_damaged.animation + +#begin Textures/Animations/zombie_death.animation +/copy:Textures/Animations/zombie_death.animation + +#begin Textures/Animations/zombie_idle.animation +/copy:Textures/Animations/zombie_idle.animation + +#begin Textures/Animations/zombie_walk.animation +/copy:Textures/Animations/zombie_walk.animation + #begin Textures/AnimationTextures/Character/hr-level1_idle.png /importer:TextureImporter /processor:TextureProcessor @@ -280,6 +295,30 @@ /processorParam:TextureFormat=Color /build:Textures/AnimationTextures/unicorn.png +#begin Textures/AnimationTextures/Zombie/zombie_spritesheet_v1.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:Textures/AnimationTextures/Zombie/zombie_spritesheet_v1.png + +#begin Textures/AnimationTextures/Zombie/zombie_spritesheet_v2.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:Textures/AnimationTextures/Zombie/zombie_spritesheet_v2.png + #begin Textures/GUI/background/base.png /importer:TextureImporter /processor:TextureProcessor diff --git a/ZoFo/Content/MapData/MapSession.tiled-session b/ZoFo/Content/MapData/MapSession.tiled-session index c7b859f..e679791 100644 --- a/ZoFo/Content/MapData/MapSession.tiled-session +++ b/ZoFo/Content/MapData/MapSession.tiled-session @@ -47,6 +47,7 @@ "TileSets/TileSet 1.tsj", "TileSets/WallSet.tsj" ], + "stampsFolder": "D:/C#/Я смотрел ваши ХАКАТОНЫ/ZoFo/ZoFo/Content/MapData/TileStamps", "tileset.lastUsedFormat": "json", "tileset.margin": 0, "tileset.spacing": 0, diff --git a/ZoFo/Content/MapData/TileStamps/boulders.stamp b/ZoFo/Content/MapData/TileStamps/boulders.stamp new file mode 100644 index 0000000..a76d82f --- /dev/null +++ b/ZoFo/Content/MapData/TileStamps/boulders.stamp @@ -0,0 +1 @@ +{"name":"Boulders","variations":[{"map":{"compressionlevel":-1,"height":3,"infinite":false,"layers":[{"compression":"zlib","data":"eJwNwwcNACAMALCZ55iAYYIjjzZpiYhqszucpsvt8fr8tSAHbw==","encoding":"base64","height":3,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":4,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/TilesetNature.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":4},"probability":1},{"map":{"compressionlevel":-1,"height":2,"infinite":false,"layers":[{"compression":"zlib","data":"eJw7x8DAcB6InwHxcyAGACFwA2s=","encoding":"base64","height":2,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":2,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/TilesetNature.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":2},"probability":1},{"map":{"compressionlevel":-1,"height":1,"infinite":false,"layers":[{"compression":"zlib","data":"eJx7wcDAAAADpADp","encoding":"base64","height":1,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":1,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/TilesetNature.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":1},"probability":1},{"map":{"compressionlevel":-1,"height":2,"infinite":false,"layers":[{"compression":"zlib","data":"eJxjYGRgYARiCSCWBGIAAWQANw==","encoding":"base64","height":2,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":2,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/TilesetNature.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":2},"probability":1},{"map":{"compressionlevel":-1,"height":3,"infinite":false,"layers":[{"compression":"zlib","data":"eJwNwwcNACAMALDxTHBMcPxbo02aU0Sx2uwOp8vt8fr8FqQBVw==","encoding":"base64","height":3,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":4,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/TilesetNature.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":4},"probability":1},{"map":{"compressionlevel":-1,"height":3,"infinite":false,"layers":[{"compression":"zlib","data":"eJxjY2RgYAdiOSCWB2IzIDYHYgAHYgC+","encoding":"base64","height":3,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":2,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/TilesetNature.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":2},"probability":1},{"map":{"compressionlevel":-1,"height":2,"infinite":false,"layers":[{"compression":"zlib","data":"eJwzYGRgMARiDyD2BGIACOQA9w==","encoding":"base64","height":2,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":2,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/TilesetNature.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":2},"probability":1},{"map":{"compressionlevel":-1,"height":1,"infinite":false,"layers":[{"compression":"zlib","data":"eJzzYmRgAAABLwBM","encoding":"base64","height":1,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":1,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/TilesetNature.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":1},"probability":1},{"map":{"compressionlevel":-1,"height":1,"infinite":false,"layers":[{"compression":"zlib","data":"eJzzZmRgAAABMwBN","encoding":"base64","height":1,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":1,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/TilesetNature.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":1},"probability":1},{"map":{"compressionlevel":-1,"height":1,"infinite":false,"layers":[{"compression":"zlib","data":"eJzzYWRgAAABNwBO","encoding":"base64","height":1,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":1,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/TilesetNature.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":1},"probability":1}]} \ No newline at end of file diff --git a/ZoFo/Content/MapData/TileStamps/stone buildings.stamp b/ZoFo/Content/MapData/TileStamps/stone buildings.stamp new file mode 100644 index 0000000..47d327e --- /dev/null +++ b/ZoFo/Content/MapData/TileStamps/stone buildings.stamp @@ -0,0 +1 @@ +{"name":"Stone Buildings","variations":[{"map":{"compressionlevel":-1,"height":3,"infinite":false,"layers":[{"compression":"zlib","data":"eJwNwwcNACAMALBxLMCwwPGvjzZpiYhqszucpsvt8fr8EWABDw==","encoding":"base64","height":3,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":4,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/tileset 1 collision.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":4},"probability":1},{"map":{"compressionlevel":-1,"height":3,"infinite":false,"layers":[{"compression":"zlib","data":"eJxjZWBgYANidiDmAGJJIJYCYmkglgFiXSDWA2J9IDYAYgAWQAE/","encoding":"base64","height":3,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":4,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/tileset 1 collision.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":4},"probability":1},{"map":{"compressionlevel":-1,"height":3,"infinite":false,"layers":[{"compression":"zlib","data":"eJzjZGBg4AJibiCWBWI5IJYHYkMgNgJiYyAGAA+EAQ8=","encoding":"base64","height":3,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":3,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/tileset 1 collision.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":3},"probability":1},{"map":{"compressionlevel":-1,"height":3,"infinite":false,"layers":[{"compression":"zlib","data":"eJzjYWBg4AViPiBWAGJFIFYCYhMgNgViMyAGABGgASo=","encoding":"base64","height":3,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":3,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/tileset 1 collision.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":3},"probability":1},{"map":{"compressionlevel":-1,"height":2,"infinite":false,"layers":[{"compression":"zlib","data":"eJzzY2Bg8AfiACBOAuJkIE4BYgAb1AIX","encoding":"base64","height":2,"id":1,"name":"","opacity":1,"type":"tilelayer","visible":true,"width":3,"x":0,"y":0}],"nextlayerid":2,"nextobjectid":1,"orientation":"orthogonal","renderorder":"right-down","tiledversion":"1.10.2","tileheight":16,"tilesets":[{"firstgid":1,"source":"../TileSets/tileset 1 collision.tsj"}],"tilewidth":16,"type":"map","version":"1.10","width":3},"probability":1}]} \ No newline at end of file diff --git a/ZoFo/Content/Textures/AnimationTextures/Zombie/zombie_spritesheet_v1.png b/ZoFo/Content/Textures/AnimationTextures/Zombie/zombie_spritesheet_v1.png new file mode 100644 index 0000000..d54b7ba Binary files /dev/null and b/ZoFo/Content/Textures/AnimationTextures/Zombie/zombie_spritesheet_v1.png differ diff --git a/ZoFo/Content/Textures/AnimationTextures/Zombie/zombie_spritesheet_v2.png b/ZoFo/Content/Textures/AnimationTextures/Zombie/zombie_spritesheet_v2.png new file mode 100644 index 0000000..c8ca02c Binary files /dev/null and b/ZoFo/Content/Textures/AnimationTextures/Zombie/zombie_spritesheet_v2.png differ diff --git a/ZoFo/Content/Textures/Animations/zombie_attack.animation b/ZoFo/Content/Textures/Animations/zombie_attack.animation new file mode 100644 index 0000000..b8129db --- /dev/null +++ b/ZoFo/Content/Textures/Animations/zombie_attack.animation @@ -0,0 +1 @@ +{"id":"zombie_attack","textureName":"Textures/AnimationTextures/Zombie/zombie_spritesheet_v1","startSpriteRectangle":{"X":0,"Y":64,"Width":32,"Height":32},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":3,"isCycle":true,"offset":"0, 0"} diff --git a/ZoFo/Content/Textures/Animations/zombie_damaged.animation b/ZoFo/Content/Textures/Animations/zombie_damaged.animation new file mode 100644 index 0000000..6d0609d --- /dev/null +++ b/ZoFo/Content/Textures/Animations/zombie_damaged.animation @@ -0,0 +1 @@ +{"id":"zombie_damaged","textureName":"Textures/AnimationTextures/Zombie/zombie_spritesheet_v1","startSpriteRectangle":{"X":0,"Y":128,"Width":32,"Height":32},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":1,"isCycle":true,"offset":"0, 0"} diff --git a/ZoFo/Content/Textures/Animations/zombie_death.animation b/ZoFo/Content/Textures/Animations/zombie_death.animation new file mode 100644 index 0000000..97aaa9c --- /dev/null +++ b/ZoFo/Content/Textures/Animations/zombie_death.animation @@ -0,0 +1 @@ +{"id":"zombie_death","textureName":"Textures/AnimationTextures/Zombie/zombie_spritesheet_v1","startSpriteRectangle":{"X":0,"Y":96,"Width":32,"Height":32},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":9,"isCycle":true,"offset":"0, 0"} diff --git a/ZoFo/Content/Textures/Animations/zombie_idle.animation b/ZoFo/Content/Textures/Animations/zombie_idle.animation new file mode 100644 index 0000000..b96e1a3 --- /dev/null +++ b/ZoFo/Content/Textures/Animations/zombie_idle.animation @@ -0,0 +1 @@ +{"id":"zombie_idle","textureName":"Textures/AnimationTextures/Zombie/zombie_spritesheet_v1","startSpriteRectangle":{"X":0,"Y":0,"Width":32,"Height":32},"frameSecond":[{"Item1":0,"Item2":60}],"textureFrameInterval":0,"framesCount":2,"isCycle":true,"offset":"0, 0"} diff --git a/ZoFo/Content/Textures/Animations/zombie_walk.animation b/ZoFo/Content/Textures/Animations/zombie_walk.animation new file mode 100644 index 0000000..f6dbfa5 --- /dev/null +++ b/ZoFo/Content/Textures/Animations/zombie_walk.animation @@ -0,0 +1 @@ +{"id":"zombie_walk","textureName":"Textures/AnimationTextures/Zombie/zombie_spritesheet_v1","startSpriteRectangle":{"X":0,"Y":32,"Width":32,"Height":32},"frameSecond":[{"Item1":0,"Item2":5}],"textureFrameInterval":0,"framesCount":8,"isCycle":true,"offset":"0, 0"} diff --git a/ZoFo/GameCore/Client.cs b/ZoFo/GameCore/Client.cs index 325efbc..47fdc88 100644 --- a/ZoFo/GameCore/Client.cs +++ b/ZoFo/GameCore/Client.cs @@ -24,6 +24,9 @@ using ZoFo.GameCore.GUI; using ZoFo.GameCore.GameObjects.Entities.Interactables.Collectables; using ZoFo.GameCore.GameObjects.MapObjects.StopObjects; using ZoFo.GameCore.GameObjects.Entities.LivingEntities.Enemies; +using ZoFo.GameCore.Graphics; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json; namespace ZoFo.GameCore { public class Client @@ -54,13 +57,21 @@ namespace ZoFo.GameCore public void OnDataSend(string data) { - List updateDatas = JsonSerializer.Deserialize>(data); + //List updateDatas = JsonSerializer.Deserialize>(data); + JArray jToken = JsonConvert.DeserializeObject(data) as JArray; + + //string[] brands = jToken.SelectToken("")?.ToObject(); + foreach (JToken update in jToken.Children()) + { + string a = update.ToString(); + UpdateTileCreated u = System.Text.Json.JsonSerializer.Deserialize(a); + } // тут будет switch AppManager.Instance.debugHud.Log(data); - foreach (var item in updateDatas) - { - GotData(item); - } + //foreach (var item in updateDatas) + //{ + // GotData(item); + //} } public void GameEndedUnexpectedly() { } @@ -112,22 +123,21 @@ namespace ZoFo.GameCore mapObjects.Add( new MapObject( (update as UpdateTileCreated).Position, - (update as UpdateTileCreated).Size.ToVector2(), - (update as UpdateTileCreated).sourceRectangle, + (update as UpdateTileCreated).Size.GetPoint().ToVector2(), + (update as UpdateTileCreated).sourceRectangle.GetRectangle(), (update as UpdateTileCreated).tileSetName )); } - else if (update is UpdateStopObjectCreated) - { - stopObjects.Add( - new StopObject( - (update as UpdateStopObjectCreated).Position, - (update as UpdateStopObjectCreated).Size.ToVector2(), - (update as UpdateStopObjectCreated).sourceRectangle, - (update as UpdateStopObjectCreated).tileSetName, - (update as UpdateStopObjectCreated).collisions - )); - } + //else if (update is UpdateStopObjectCreated) + //{ + // stopObjects.Add( + // new StopObject( + // (update as UpdateStopObjectCreated).Position, + // (update as UpdateStopObjectCreated).Size.ToVector2(), + // (update as UpdateStopObjectCreated).sourceRectangle, + // (update as UpdateStopObjectCreated).tileSetName + // )); + //} else if (update is UpdateGameObjectCreated) { GameObject created_gameObject; @@ -154,11 +164,17 @@ namespace ZoFo.GameCore //); } else if (update is UpdatePosition) + { + var ent = FindEntityById(update.IdEntity); + + ent.position = (update as UpdatePosition).NewPosition; + } + else if (update is UpdateAnimation) { var ent = FindEntityById(update.IdEntity); - ent.position = (update as UpdatePosition).NewPosition; - //DebugHUD.Instance.Log("newPosition " + ent.position); + ((ent as Entity).graphicsComponent as AnimatedGraphicsComponent).StartAnimation((update as UpdateAnimation).animationId); + DebugHUD.Instance.Log("new Animation " + ent.position); } } diff --git a/ZoFo/GameCore/GameManagers/MapManager/MapManager.cs b/ZoFo/GameCore/GameManagers/MapManager/MapManager.cs index 94bf9e3..72dcdea 100644 --- a/ZoFo/GameCore/GameManagers/MapManager/MapManager.cs +++ b/ZoFo/GameCore/GameManagers/MapManager/MapManager.cs @@ -33,13 +33,13 @@ namespace ZoFo.GameCore.GameManagers.MapManager PropertyNameCaseInsensitive = true }; TileMap tileMap = - JsonSerializer.Deserialize(File.ReadAllText(string.Format(_templatePath, mapName)), options); + JsonSerializer.Deserialize(File.ReadAllText(Path.Combine(AppContext.BaseDirectory, string.Format(_templatePath, mapName))), options); // Загрузка TileSet-ов по TileSetInfo List tileSets = new List(); foreach (TileSetInfo tileSetInfo in tileMap.TileSets) { - TileSet tileSet = LoadTileSet(Path.Combine("Content", "MapData", "TileMaps", tileSetInfo.Source)); + TileSet tileSet = LoadTileSet(Path.Combine(AppContext.BaseDirectory, "Content", "MapData", "TileMaps", tileSetInfo.Source)); tileSet.FirstGid = tileSetInfo.FirstGid; tileSets.Add(tileSet); } @@ -75,14 +75,15 @@ namespace ZoFo.GameCore.GameManagers.MapManager (i / chunk.Height) * tileMap.TileHeight + chunk.Y * tileMap.TileHeight); Tile tile = tileSet.Tiles[number]; // По факту может быть StopObjectom, но на уровне Tiled это все в первую очередь Tile - + string textureName = Path.Combine(AppContext.BaseDirectory, "Content", "Textures", "TileSetImages", + Path.GetFileName(tileSet.Image).Replace(".png", "")); switch (tile.Type) { case "Tile": AppManager.Instance.server.RegisterGameObject(new MapObject(position, new Vector2(tileSet.TileWidth, tileSet.TileHeight), sourceRectangle, - "Textures/TileSetImages/" + Path.GetFileName(tileSet.Image).Replace(".png", ""))); + textureName)); break; case "StopObject": @@ -91,7 +92,7 @@ namespace ZoFo.GameCore.GameManagers.MapManager AppManager.Instance.server.RegisterGameObject(new StopObject(position, new Vector2(tileSet.TileWidth, tileSet.TileHeight), sourceRectangle, - "Textures/TileSetImages/" + Path.GetFileName(tileSet.Image).Replace(".png", ""), + textureName, collisionRectangles.ToArray())); break; diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs b/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs index 8c09944..6e1e6b4 100644 --- a/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs +++ b/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs @@ -116,8 +116,8 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager { while(socket.Connected) { - byte[] bytes = new byte[2048]; - var countAnsw = socket.Receive(bytes); //Вылетает если кто то закрыл + byte[] bytes = new byte[65535]; + var countAnsw = socket.Receive(bytes, SocketFlags.Partial); //Вылетает если кто то закрыл string update = Encoding.UTF8.GetString(bytes, 0, countAnsw); // обновление отосланные сервером GetDataSent(update); } diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/SerializableDTO/SerializablePoint.cs b/ZoFo/GameCore/GameManagers/NetworkManager/SerializableDTO/SerializablePoint.cs new file mode 100644 index 0000000..4480a8c --- /dev/null +++ b/ZoFo/GameCore/GameManagers/NetworkManager/SerializableDTO/SerializablePoint.cs @@ -0,0 +1,18 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ZoFo.GameCore.GameManagers.NetworkManager.SerializableDTO +{ + public class SerializablePoint + { + public int X; + public int Y; + + public SerializablePoint(Point point) { X = point.X; Y = point.Y;} + public Point GetPoint() { return new Point(X, Y);} + } +} diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/SerializableDTO/SerializableRectangle.cs b/ZoFo/GameCore/GameManagers/NetworkManager/SerializableDTO/SerializableRectangle.cs new file mode 100644 index 0000000..720344e --- /dev/null +++ b/ZoFo/GameCore/GameManagers/NetworkManager/SerializableDTO/SerializableRectangle.cs @@ -0,0 +1,33 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json.Serialization; +using System.Threading.Tasks; +using ZoFo.GameCore.GameManagers.NetworkManager.SerializableDTO; + +namespace ZoFo.GameCore.GameManagers.NetworkManager.SerializableDTO +{ + [Serializable] + [JsonSerializable(typeof(SerializableRectangle))] + public class SerializableRectangle + { + public SerializablePoint Size { get; set; } + public SerializablePoint Location { get; set; } + public int X { get; set; } + public int Y { get; set; } + public SerializableRectangle() + { + + } + + public SerializableRectangle(Rectangle rectangle) { X = rectangle.X; Y = rectangle.Y; + Size = new SerializablePoint(rectangle.Size); Location = new SerializablePoint(rectangle.Location); } + + public Rectangle GetRectangle() + { + return new Rectangle() { X = X, Y = Y, Size = Size.GetPoint(), Location = Location.GetPoint() }; + } + } +} diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs b/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs index e625ce4..697c61d 100644 --- a/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs +++ b/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs @@ -53,7 +53,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager public static IPAddress GetIp() { string hostName = Dns.GetHostName(); // Retrive the Name of HOST - var ipList = Dns.GetHostByName(hostName).AddressList; + var ipList = Dns.GetHostEntry(hostName).AddressList; foreach (var ip in ipList) { @@ -80,15 +80,15 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager //Что это? //по 10 паков за раз TODO FIXITFIXITFIXITFIXITFIXITFIXITFIXITFIXITFIXITFIXITFIXITFIXIT List datasToSend = new List(); - for (int i = 0; i < 5 && i - /// При создании тайла TODO move to another file - /// - public class UpdateStopObjectCreated : UpdateData - { - public UpdateStopObjectCreated() { UpdateType = "UpdateStopObjectCreated"; } - public Texture2D TextureTile { get; set; } - public Vector2 Position { get; set; } - public Point Size { get; set; } - public Rectangle sourceRectangle { get; set; } - public string tileSetName { get; set; } - public Rectangle[] collisions { get; set; } - } } diff --git a/ZoFo/GameCore/GameManagers/SoundManager.cs b/ZoFo/GameCore/GameManagers/SoundManager.cs index 97a5922..204d965 100644 --- a/ZoFo/GameCore/GameManagers/SoundManager.cs +++ b/ZoFo/GameCore/GameManagers/SoundManager.cs @@ -24,15 +24,7 @@ namespace ZoFo.GameCore.GameManagers { //List sounds = AppManager.Instance.Content.Load>("sounds/"); - string a = Path.Combine("Content", "sounds"); - string[] k; - if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - k = Directory.GetFiles(Path.Combine("bin", "Debug", "net8.0", "Content", "sounds")).Where(x => x.EndsWith("xnb")).ToArray(); - } - else{ - k = Directory.GetFiles(Path.Combine(Directory.GetCurrentDirectory(), "Content", "sounds")).Where(x => x.EndsWith("xnb")).ToArray(); - } + string[] k = Directory.GetFiles(Path.Combine(AppContext.BaseDirectory, "Content", "sounds")).Where(x => x.EndsWith("xnb")).ToArray(); if (k.Length > 0) { diff --git a/ZoFo/GameCore/GameObjects/Entities/EntittyForAnimationTests.cs b/ZoFo/GameCore/GameObjects/Entities/EntittyForAnimationTests.cs index 2bad778..20e779e 100644 --- a/ZoFo/GameCore/GameObjects/Entities/EntittyForAnimationTests.cs +++ b/ZoFo/GameCore/GameObjects/Entities/EntittyForAnimationTests.cs @@ -14,11 +14,11 @@ namespace ZoFo.GameCore.GameObjects.Entities //public override GraphicsComponent graphicsComponent { get; } = new GraphicsComponent(new List { "тут пишите название анимации" }, "сдублируйте " + - public override GraphicsComponent graphicsComponent { get; } = new AnimatedGraphicsComponent(new List { "player_idle_rotate_weapon" }, "player_idle_rotate_weapon"); + public override GraphicsComponent graphicsComponent { get; } = new AnimatedGraphicsComponent(new List { "zombie_idle" }, "zombie_idle"); public EntittyForAnimationTests(Vector2 position) : base(position) { - graphicsComponent.ObjectDrawRectangle = new Rectangle(0,0,16*12, 16 * 16); + graphicsComponent.ObjectDrawRectangle = new Rectangle(0,0,16*20, 16 * 20); position = new Vector2(10, 10); } diff --git a/ZoFo/GameCore/GameObjects/Entities/Entity.cs b/ZoFo/GameCore/GameObjects/Entities/Entity.cs index 456d8da..3b88ad8 100644 --- a/ZoFo/GameCore/GameObjects/Entities/Entity.cs +++ b/ZoFo/GameCore/GameObjects/Entities/Entity.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; +using ZoFo.GameCore.GameManagers; using ZoFo.GameCore.GameManagers.CollisionManager; namespace ZoFo.GameCore.GameObjects.Entities @@ -36,6 +37,17 @@ namespace ZoFo.GameCore.GameObjects.Entities Update(); base.UpdateLogic(); } + + public void StartAnimation(string animationId) + { + (graphicsComponent as Graphics.AnimatedGraphicsComponent).StartAnimation(animationId); + AppManager.Instance.server.AddData(new GameManagers.NetworkManager.Updates.ServerToClient.UpdateAnimation() + { + animationId = animationId, + IdEntity = Id + }); + + } } } diff --git a/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Enemies/Zombie.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Enemies/Zombie.cs index bc504f9..4e2ce66 100644 --- a/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Enemies/Zombie.cs +++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Enemies/Zombie.cs @@ -11,12 +11,12 @@ namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Enemies { class Zombie : Enemy { - public override GraphicsComponent graphicsComponent { get; } = new AnimatedGraphicsComponent("Textures/icons/8"); + public override GraphicsComponent graphicsComponent { get; } = new AnimatedGraphicsComponent(new List { "zombie_damaged","zombie_walk","zombie_idle","zombie_attack","zombie_death" }, "zombie_walk"); public Zombie(Vector2 position) : base(position) { health = 5; speed =2; - collisionComponent.stopRectangle = new Rectangle(0, 0, 100, 100); + collisionComponent.stopRectangle = new Rectangle(0, 0, 52, 100); graphicsComponent.ObjectDrawRectangle = new Rectangle(0, 0, 100, 100); } @@ -26,12 +26,17 @@ namespace ZoFo.GameCore.GameObjects.Entities.LivingEntities.Enemies AppManager.Instance.server.players[0].position - position ); velocity=new Vector2(duration.X * speed, duration.Y*speed); - if(position.X>595 && 605>position.X && position.Y>495 && 505>position.Y) + if (Random.Shared.NextDouble() > 0.9) { - velocity = Vector2.Zero; + + StartAnimation("zombie_damaged"); } - //position.X += velocity.X*t; - //position.Y += velocity.Y * t; + if (Random.Shared.NextDouble() > 0.9) + { + + StartAnimation("zombie_idle"); + } + } } } diff --git a/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/Player.cs b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/Player.cs index c4617e2..84d3e74 100644 --- a/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/Player.cs +++ b/ZoFo/GameCore/GameObjects/Entities/LivingEntities/Player/Player.cs @@ -39,8 +39,9 @@ public class Player : LivingEntity } float t; public void MovementLogic() - { - IsTryingToShoot = true; + { + IsTryingToShoot = true; + StartAnimation("player_look_down");//gslkjfsnblkjsdfnnlkjbn;zkcjnb;kkjnzx;cjkb;kzjxb;kSErgo //velocity.X = 3+(float)Math.Sin(t); t++; if (InputPlayerRotation.X > 0.9) diff --git a/ZoFo/GameCore/Graphics/AnimatedGraphicsComponent.cs b/ZoFo/GameCore/Graphics/AnimatedGraphicsComponent.cs index d590462..b6b7d45 100644 --- a/ZoFo/GameCore/Graphics/AnimatedGraphicsComponent.cs +++ b/ZoFo/GameCore/Graphics/AnimatedGraphicsComponent.cs @@ -125,8 +125,9 @@ namespace ZoFo.GameCore.Graphics buildSourceRectangle(); SetInterval(); - } + } + public void StopAnimation() { currentFrame = 0; @@ -163,6 +164,7 @@ namespace ZoFo.GameCore.Graphics } interval--; + } public override void Draw(Rectangle destinationRectangle, SpriteBatch _spriteBatch) @@ -187,8 +189,9 @@ namespace ZoFo.GameCore.Graphics destinationRectangle.Y -= CameraPosition.Y; destinationRectangle = Scaling(destinationRectangle); - _spriteBatch.Draw(texture, - destinationRectangle, sourceRectangle, Color.White); + + _spriteBatch.Draw(texture, destinationRectangle, sourceRectangle, Color.White, Rotation, + Vector2.Zero, Flip, 0); } public override void Draw(Rectangle destinationRectangle, SpriteBatch _spriteBatch, Rectangle sourceRectangle) { @@ -213,7 +216,8 @@ namespace ZoFo.GameCore.Graphics destinationRectangle = Scaling(destinationRectangle); _spriteBatch.Draw(texture, - destinationRectangle, sourceRectangle, Color.White); + destinationRectangle, sourceRectangle, Color.White, 0, + Vector2.Zero, Flip, 0); } private void buildSourceRectangle() { diff --git a/ZoFo/GameCore/Graphics/AnimationBuilder.cs b/ZoFo/GameCore/Graphics/AnimationBuilder.cs index e85ec28..50f9162 100644 --- a/ZoFo/GameCore/Graphics/AnimationBuilder.cs +++ b/ZoFo/GameCore/Graphics/AnimationBuilder.cs @@ -12,7 +12,7 @@ namespace ZoFo.GameCore.Graphics public void LoadAnimations() { Animations = new List(); - string[] animationFilesNames = Directory.GetFiles("Content/Textures/Animations"); + string[] animationFilesNames = Directory.GetFiles(Path.Combine(AppContext.BaseDirectory, "Content", "Textures", "Animations")); StreamReader reader; foreach (var fileName in animationFilesNames) diff --git a/ZoFo/GameCore/Graphics/GraphicsComponent.cs b/ZoFo/GameCore/Graphics/GraphicsComponent.cs index c71b0c3..3fa8fa4 100644 --- a/ZoFo/GameCore/Graphics/GraphicsComponent.cs +++ b/ZoFo/GameCore/Graphics/GraphicsComponent.cs @@ -9,6 +9,9 @@ public abstract class GraphicsComponent public static int scaling = 1; public string mainTextureName;//TODO костыль - пофиксить + public SpriteEffects Flip = SpriteEffects.None; + public float Rotation; + public abstract void LoadContent(); public abstract void Update(); public abstract void Draw(Rectangle destinationRectangle, SpriteBatch _spriteBatch); diff --git a/ZoFo/GameCore/Graphics/IGraphicsComponent.cs b/ZoFo/GameCore/Graphics/IGraphicsComponent.cs deleted file mode 100644 index 50e2424..0000000 --- a/ZoFo/GameCore/Graphics/IGraphicsComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Microsoft.Xna.Framework; -using Microsoft.Xna.Framework.Graphics; - -namespace ZoFo.GameCore.Graphics; - -public interface IGraphicsComponent -{ - public Rectangle ObjectDrawRectangle { get; set; } - public static int scaling = 1; - public string mainTextureName { get; set; }//TODO костыль - пофиксить - - public abstract void LoadContent(); - public abstract void Update(); - public abstract void Draw(Rectangle destinationRectangle, SpriteBatch _spriteBatch); - public abstract void Draw(Rectangle destinationRectangle, SpriteBatch _spriteBatch, Rectangle sourceRectangle); -} \ No newline at end of file diff --git a/ZoFo/GameCore/Graphics/StaticGraphicsComponent.cs b/ZoFo/GameCore/Graphics/StaticGraphicsComponent.cs index 4c25e2c..d7f1dca 100644 --- a/ZoFo/GameCore/Graphics/StaticGraphicsComponent.cs +++ b/ZoFo/GameCore/Graphics/StaticGraphicsComponent.cs @@ -8,7 +8,6 @@ using ZoFo.GameCore.GUI; namespace ZoFo.GameCore.Graphics { - public class StaticGraphicsComponent : GraphicsComponent { private Texture2D texture; @@ -18,7 +17,7 @@ namespace ZoFo.GameCore.Graphics { LoadContent(); } - + public StaticGraphicsComponent(string textureName) { BuildComponent(textureName); @@ -29,7 +28,7 @@ namespace ZoFo.GameCore.Graphics { _textureName = textureName; } - + public override void LoadContent() { @@ -37,7 +36,7 @@ namespace ZoFo.GameCore.Graphics { return; } - + texture = AppManager.Instance.Content.Load(_textureName); } @@ -53,19 +52,23 @@ namespace ZoFo.GameCore.Graphics destinationRectangle.X -= CameraPosition.X; destinationRectangle.Y -= CameraPosition.Y; destinationRectangle = Scaling(destinationRectangle); - _spriteBatch.Draw(texture, destinationRectangle, Color.White); + _spriteBatch.Draw(texture, destinationRectangle, texture.Bounds, Color.White, Rotation, + Vector2.Zero, Flip, 0); } public override void Draw(Rectangle destinationRectangle, SpriteBatch _spriteBatch, Rectangle sourceRectangle) - { - //DebugHUD.Instance.Log("draw "); + { + //DebugHUD.Instance.Log("draw "); + // Uncomment to go brrrr + //Rotation = new Random().Next(1, 365); destinationRectangle.X -= CameraPosition.X; destinationRectangle.Y -= CameraPosition.Y; destinationRectangle = Scaling(destinationRectangle); _spriteBatch.Draw(texture, - destinationRectangle, sourceRectangle, Color.White); + destinationRectangle, sourceRectangle, Color.White, Rotation, + Vector2.Zero, Flip, 0); } } -} +} \ No newline at end of file diff --git a/ZoFo/GameCore/Server.cs b/ZoFo/GameCore/Server.cs index 15d8909..3658bb9 100644 --- a/ZoFo/GameCore/Server.cs +++ b/ZoFo/GameCore/Server.cs @@ -21,6 +21,7 @@ using ZoFo.GameCore.GameObjects.Entities.LivingEntities.Player; using ZoFo.GameCore.GameObjects.MapObjects; using ZoFo.GameCore.GameObjects.MapObjects.StopObjects; using ZoFo.GameCore.Graphics; +using ZoFo.GameCore.GameManagers.NetworkManager.SerializableDTO; namespace ZoFo.GameCore { @@ -172,30 +173,13 @@ namespace ZoFo.GameCore { gameObjects.Add(gameObject); - if (gameObject is StopObject) - { - AddData(new UpdateStopObjectCreated() - { - Position = (gameObject as StopObject).position, - sourceRectangle = (gameObject as StopObject).sourceRectangle, - Size = (gameObject as StopObject).graphicsComponent.ObjectDrawRectangle.Size, - collisions = (gameObject as StopObject).collisionComponents.Select(x=>x.stopRectangle).ToArray(), - tileSetName = ((gameObject as StopObject).graphicsComponent as StaticGraphicsComponent)._textureName - });//TODO - foreach (var item in (gameObject as StopObject).collisionComponents) - { - collisionManager.Register(item); - - } - return; - } if (gameObject is MapObject) { AddData(new UpdateTileCreated() { Position = (gameObject as MapObject).position, - sourceRectangle = (gameObject as MapObject).sourceRectangle, - Size = (gameObject as MapObject).graphicsComponent.ObjectDrawRectangle.Size, + sourceRectangle = new SerializableRectangle((gameObject as MapObject).sourceRectangle), + Size = new SerializablePoint((gameObject as MapObject).graphicsComponent.ObjectDrawRectangle.Size), tileSetName = ((gameObject as MapObject).graphicsComponent as StaticGraphicsComponent)._textureName });//TODO return;