Fix start

This commit is contained in:
Mootfrost777 2024-08-17 19:32:12 +03:00
parent 89978f0fc3
commit ae050576d5
4 changed files with 43 additions and 26 deletions

View file

@ -8,9 +8,9 @@ namespace ZoFo.GameCore.GameManagers.MapManager.MapElements
{
public class Object
{
public int Height { get; set; }
public int Width { get; set; }
public int X { get; set; }
public int Y { get; set; }
public double Height { get; set; }
public double Width { get; set; }
public double X { get; set; }
public double Y { get; set; }
}
}

View file

@ -10,6 +10,6 @@ namespace ZoFo.GameCore.GameManagers.MapManager.MapElements
{
public int Id { get; set; }
public string Type { get; set; }
public List<ObjectGroup> Objectgroup { get; set; }
public ObjectGroup Objectgroup { get; set; }
}
}

View file

@ -16,8 +16,8 @@ namespace ZoFo.GameCore.GameManagers.MapManager
{
public class MapManager
{
private static readonly string _templatePath = "Content/MapData/TileMaps/{0}.tmj";
//private static readonly float _scale = 1.0f;
private List<TileSet> _tileSets = new List<TileSet>();
@ -32,7 +32,8 @@ namespace ZoFo.GameCore.GameManagers.MapManager
{
PropertyNameCaseInsensitive = true
};
TileMap tileMap = JsonSerializer.Deserialize<TileMap>(File.ReadAllText(string.Format(_templatePath, mapName)), options);
TileMap tileMap =
JsonSerializer.Deserialize<TileMap>(File.ReadAllText(string.Format(_templatePath, mapName)), options);
// Загрузка TileSet-ов по TileSetInfo
List<TileSet> tileSets = new List<TileSet>();
@ -56,32 +57,43 @@ namespace ZoFo.GameCore.GameManagers.MapManager
int number = chunk.Data[i] - tileSet.FirstGid;
int relativeColumn = number % tileSet.Columns;
int relativeRow = number / tileSet.Columns; // относительно левого угла чанка
int relativeRow = number / tileSet.Columns; // относительно левого угла чанка
Rectangle sourceRectangle = new Rectangle(relativeColumn * tileSet.TileWidth, relativeRow * tileSet.TileHeight,
tileSet.TileWidth, tileSet.TileHeight);
Rectangle sourceRectangle = new Rectangle(relativeColumn * tileSet.TileWidth,
relativeRow * tileSet.TileHeight,
tileSet.TileWidth, tileSet.TileHeight);
Vector2 position = new Vector2((i % chunk.Width) * tileSet.TileWidth + chunk.X * tileSet.TileWidth,
Vector2 position = new Vector2(
(i % chunk.Width) * tileSet.TileWidth + chunk.X * tileSet.TileWidth,
(i / chunk.Height) * tileSet.TileHeight + chunk.Y * tileSet.TileHeight);
Tile tile = tileSet.Tiles[i]; // По факту может быть StopObjectom, но на уровне Tiled это все в первую очередь Tile
Tile
tile = tileSet
.Tiles
[i]; // По факту может быть StopObjectom, но на уровне Tiled это все в первую очередь Tile
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", "")));
AppManager.Instance.server.RegisterGameObject(new MapObject(position,
new Vector2(tileSet.TileWidth, tileSet.TileHeight),
sourceRectangle,
"Textures/TileSetImages/" +
Path.GetFileName(tileSet.Image).Replace(".png", "")));
break;
case "StopObject":
var collisionRectangles = LoadRectangles(tile); // Грузит коллизии обьектов
AppManager.Instance.server.RegisterGameObject(new StopObject(position, new Vector2(tileSet.TileWidth, tileSet.TileHeight),
sourceRectangle, "Textures/TileSetImages/" + Path.GetFileName(tileSet.Image).Replace(".png", ""), collisionRectangles.ToArray()));
var collisionRectangles = LoadRectangles(tile); // Грузит коллизии обьектов
AppManager.Instance.server.RegisterGameObject(new StopObject(position,
new Vector2(tileSet.TileWidth, tileSet.TileHeight),
sourceRectangle,
"Textures/TileSetImages/" +
Path.GetFileName(tileSet.Image).Replace(".png", ""),
collisionRectangles.ToArray()));
// TODO: изменить конструктор, засунув коллизии.
break;
default:
break;
}
}
}
}
@ -112,16 +124,15 @@ namespace ZoFo.GameCore.GameManagers.MapManager
/// </summary>
/// <param name="tile"></param>
/// <returns></returns>
private List<Rectangle> LoadRectangles(Tile tile) {
private List<Rectangle> LoadRectangles(Tile tile)
{
List<Rectangle> collisionRectangles = new List<Rectangle>();
foreach (var objectGroup in tile.Objectgroup)
foreach (var obj in tile.Objectgroup.Objects)
{
foreach (var obj in objectGroup.Objects)
{
collisionRectangles.Add(new Rectangle(obj.X, obj.Y, obj.Width, obj.Height));
}
collisionRectangles.Add(new Rectangle((int)obj.X, (int)obj.Y, (int)obj.Width, (int)obj.Height));
}
return collisionRectangles;
}
}
}
}

View file

@ -0,0 +1,6 @@
namespace ZoFo.GameCore.Graphics;
public class AnimationComponent
{
}