Fix start
This commit is contained in:
parent
89978f0fc3
commit
ae050576d5
4 changed files with 43 additions and 26 deletions
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
6
ZoFo/GameCore/Graphics/AnimationComponent.cs
Normal file
6
ZoFo/GameCore/Graphics/AnimationComponent.cs
Normal file
|
@ -0,0 +1,6 @@
|
|||
namespace ZoFo.GameCore.Graphics;
|
||||
|
||||
public class AnimationComponent
|
||||
{
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue