From 11b2af46ffbb6f59349e01cb40084ab0ed705024 Mon Sep 17 00:00:00 2001 From: Simon Holmberg Date: Sat, 29 Sep 2012 00:32:35 +0200 Subject: [PATCH] Squad list. Squad unit spawns handled by map objects. --- DepthsBelow/DepthsBelow/Core.cs | 36 ++++-- DepthsBelow/DepthsBelow/Entity.cs | 19 +++ DepthsBelow/DepthsBelow/Map.cs | 92 ++++++++++++-- DepthsBelow/DepthsBelow/MouseInput.cs | 16 ++- DepthsBelow/DepthsBelow/Soldier.cs | 4 +- .../DepthsBelowContent.contentproj | 1 + .../DepthsBelowContent/maps/Cave.Level1.tmx | 112 +++++++++++++++++- .../MapProcessor.cs | 60 +++++++++- 8 files changed, 300 insertions(+), 40 deletions(-) diff --git a/DepthsBelow/DepthsBelow/Core.cs b/DepthsBelow/DepthsBelow/Core.cs index 15cce3a..2c75af9 100644 --- a/DepthsBelow/DepthsBelow/Core.cs +++ b/DepthsBelow/DepthsBelow/Core.cs @@ -19,9 +19,10 @@ namespace DepthsBelow GraphicsDeviceManager graphics; SpriteBatch spriteBatch; - public Camera camera; + public Camera Camera; MouseInput mouseInput; - public Soldier soldier; + //public Soldier soldier; + public List Squad; private Map map; public Core() @@ -49,7 +50,9 @@ namespace DepthsBelow protected override void Initialize() { // TODO: Add your initialization logic here - camera = new Camera(this); + Camera = new Camera(this); + Squad = new List(); + base.Initialize(); } @@ -63,10 +66,11 @@ namespace DepthsBelow spriteBatch = new SpriteBatch(GraphicsDevice); map = Content.Load("maps/Cave.Level1"); + map.ParseObjects(this); // TODO: use this.Content to load your game content here Soldier.LoadContent(this); - soldier = new Soldier(this); + //soldier = new Soldier(this); mouseInput = new MouseInput(this); mouseInput.LoadContent(); @@ -92,11 +96,13 @@ namespace DepthsBelow if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); - camera.Update(gameTime); + Camera.Update(gameTime); mouseInput.Update(gameTime); // TODO: Add your update logic here - soldier.Update(gameTime); + //soldier.Update(gameTime); + foreach (var soldier in Squad) + soldier.Update(gameTime); base.Update(gameTime); } @@ -109,17 +115,23 @@ namespace DepthsBelow { GraphicsDevice.Clear(Color.Black); - // Start drawing using the camera transform - spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null, camera.Transform); + // Start drawing using the Camera transform + spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null, + Camera.Transform); // Draw the level map.Draw(spriteBatch); // Draw units // TODO: Foreach etc... - Component.SpriteRenderer rc = soldier.GetComponent(); - if (rc != null) - rc.Draw(spriteBatch); - // Draw mouse input visuals + foreach (var soldier in Squad) + { + var sr = soldier.GetComponent(); + Console.WriteLine("Drawing soldier at: " + soldier.pixelTransform.X + "," + soldier.pixelTransform.Y); + if (sr != null) + sr.Draw(spriteBatch); + } + + // Draw mouse input visuals mouseInput.Draw(spriteBatch); spriteBatch.End(); diff --git a/DepthsBelow/DepthsBelow/Entity.cs b/DepthsBelow/DepthsBelow/Entity.cs index 673958d..b35f26e 100644 --- a/DepthsBelow/DepthsBelow/Entity.cs +++ b/DepthsBelow/DepthsBelow/Entity.cs @@ -11,6 +11,25 @@ namespace DepthsBelow List Components; public Component.PixelTransform pixelTransform; public Component.GridTransform gridTransform; + public int X + { + get { return this.gridTransform.X; } + set + { + this.gridTransform.X = value; + this.pixelTransform.X = this.gridTransform.ToWorld().X; + } + } + public int Y + { + get { return this.gridTransform.Y; } + set + { + this.gridTransform.Y = value; + this.pixelTransform.Y = this.gridTransform.ToWorld().Y; + } + } + private Core core; public Entity(Core core) diff --git a/DepthsBelow/DepthsBelow/Map.cs b/DepthsBelow/DepthsBelow/Map.cs index 0ec34f0..10c590e 100755 --- a/DepthsBelow/DepthsBelow/Map.cs +++ b/DepthsBelow/DepthsBelow/Map.cs @@ -1,52 +1,118 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace DepthsBelow { - public class Tile + public class MapTile { public Texture2D Texture; public Rectangle SourceRectangle; public SpriteEffects SpriteEffects; } - public class Layer + public enum MapObjectType : byte + { + Plain, + Tile, + Polygon, + Polyline + } + + public class MapObject + { + //public MapObjectType ObjectType; + public string Name; + public string Type; + public Rectangle Bounds; + public List Points; + } + + public class MapLayer { public int Width; public int Height; public string Name; - public Tile[] Tiles; + } + + public class MapTileLayer : MapLayer + { + public MapTile[] Tiles; + } + + public class MapObjectLayer : MapLayer + { + public MapObject[] Objects; } public class Map { public int TileWidth; public int TileHeight; - public List Layers = new List(); + public List Layers = new List(); + + public Map() + { + + } + + public void ParseObjects(Core core) + { + foreach (var layer in Layers) + { + var objectLayer = layer as MapObjectLayer; + + if (objectLayer == null) + continue; + + foreach (var mapObject in objectLayer.Objects) + { + Console.WriteLine(mapObject.Type); + Console.WriteLine(mapObject.Bounds.Left + "," + mapObject.Bounds.Top); + + if (mapObject.Type == "SquadStart") + { + var soldier = new Soldier(core); + var mapObjectPos = new Vector2(mapObject.Bounds.Left, mapObject.Bounds.Top); + var mapObjectGridPos = Grid.WorldToGrid(mapObjectPos); + soldier.X = mapObjectGridPos.X; + soldier.Y = mapObjectGridPos.Y; + + core.Squad.Add(soldier); + } + } + } + } public void Draw(SpriteBatch spriteBatch) { foreach (var layer in Layers) { - if (layer.Name == "Collision") + var tileLayer = layer as MapTileLayer; + + if (tileLayer == null) continue; - for (int y = 0; y < layer.Height; y++) + // Don't draw the collision layer + if (tileLayer.Name == "Collision") + continue; + + for (int y = 0; y < tileLayer.Height; y++) { - for (int x = 0; x < layer.Width; x++) + for (int x = 0; x < tileLayer.Width; x++) { - Tile tile = layer.Tiles[y*layer.Width + x]; - if (tile != null) + MapTile mapTile = tileLayer.Tiles[y * layer.Width + x]; + if (mapTile != null) { spriteBatch.Draw( - tile.Texture, + mapTile.Texture, new Rectangle(x * TileWidth, y * TileHeight, TileWidth, TileHeight), - tile.SourceRectangle, + mapTile.SourceRectangle, Color.White, 0, Vector2.Zero, - tile.SpriteEffects, + mapTile.SpriteEffects, 0); } } diff --git a/DepthsBelow/DepthsBelow/MouseInput.cs b/DepthsBelow/DepthsBelow/MouseInput.cs index 3faf64b..a59ef74 100644 --- a/DepthsBelow/DepthsBelow/MouseInput.cs +++ b/DepthsBelow/DepthsBelow/MouseInput.cs @@ -39,7 +39,7 @@ namespace DepthsBelow public void Update(GameTime gameTime) { MouseState ms = Mouse.GetState(); - Vector2 mouseWorldPos = core.camera.ScreenToWorld(new Vector2(ms.X, ms.Y)); + Vector2 mouseWorldPos = core.Camera.ScreenToWorld(new Vector2(ms.X, ms.Y)); KeyboardState ks = Keyboard.GetState(); // Selection rectangle @@ -55,16 +55,22 @@ namespace DepthsBelow selectionRectangle.Height = (int)mouseWorldPos.Y - selectionRectangle.Y; } } + // When the mouse is released if (ms.LeftButton == ButtonState.Released && selectionRectangle != Rectangle.Empty) { + // Deselect all units if (!ks.IsKeyDown(Keys.LeftControl)) - core.soldier.Selected = false; + foreach (var unit in core.Squad) + unit.Selected = false; - if (selectionRectangle.Intersects(core.soldier.GetComponent().Rectangle)) + // Select all units in the rectangle + foreach (var unit in core.Squad) { - core.soldier.Selected = true; + if (selectionRectangle.Intersects(unit.GetComponent().Rectangle)) + unit.Selected = true; } - + + // Hide the selection rectangle selectionRectangle = Rectangle.Empty; } diff --git a/DepthsBelow/DepthsBelow/Soldier.cs b/DepthsBelow/DepthsBelow/Soldier.cs index 42e581b..2753957 100644 --- a/DepthsBelow/DepthsBelow/Soldier.cs +++ b/DepthsBelow/DepthsBelow/Soldier.cs @@ -9,6 +9,7 @@ namespace DepthsBelow public class Soldier : Entity { public static Texture2D Texture; + public Color Color; public static Point Origin; private bool _selected; @@ -21,6 +22,7 @@ namespace DepthsBelow pixelTransform.Origin = new Vector2(16, 16); + this.Color = Color.White; var rc = new SpriteRenderer(this) {Texture = Texture, Color = Color.White}; AddComponent(rc); @@ -34,7 +36,7 @@ namespace DepthsBelow set { _selected = value; - GetComponent().Color = (value) ? Color.Blue : Color.HotPink; + GetComponent().Color = (value) ? Color.Blue : this.Color; } } diff --git a/DepthsBelow/DepthsBelowContent/DepthsBelowContent.contentproj b/DepthsBelow/DepthsBelowContent/DepthsBelowContent.contentproj index dfd0e74..3a6f708 100644 --- a/DepthsBelow/DepthsBelowContent/DepthsBelowContent.contentproj +++ b/DepthsBelow/DepthsBelowContent/DepthsBelowContent.contentproj @@ -89,6 +89,7 @@ Cave.Level1 MapProcessor TmxImporter + Designer diff --git a/DepthsBelow/DepthsBelowContent/maps/Cave.Level1.tmx b/DepthsBelow/DepthsBelowContent/maps/Cave.Level1.tmx index 5f365f6..31a4981 100755 --- a/DepthsBelow/DepthsBelowContent/maps/Cave.Level1.tmx +++ b/DepthsBelow/DepthsBelowContent/maps/Cave.Level1.tmx @@ -4,8 +4,114 @@ - - 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 - + +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,52,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,54,54,54,54,54,54,54,54,54,53,53,53,55,81, +81,68,69,69,69,69,101,102,103,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,70,69,69,69,71,81, +81,84,85,85,85,129,117,118,119,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,86,85,85,85,87,81, +81,37,7,8,21,21,133,134,135,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,7,8,7,7,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,7,8,21,21,21,21,21,21,7,8,8,7,8,21,21,21,21,21,21,21,133,134,135,87,81, +81,37,7,8,21,21,21,21,21,21,21,21,21,18,18,18,18,18,18,18,18,2,2,2,18,5,8,8,89,7,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,2,2,2,2,18,18,19,20,4,4,4,4,4,4,2,7,8,8,8,8,8,8,8,8,8,7,7,8,8,24,7,8,3,4,4,20,4,18,18,133,134,135,87,81, +81,37,7,8,19,20,20,1,1,1,1,1,21,21,1,18,19,20,20,20,20,18,18,18,5,5,7,8,89,89,5,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,18,18,18,18,18,19,20,20,20,20,20,20,3,4,7,8,24,24,24,24,24,24,24,24,8,8,8,24,19,7,7,8,4,20,3,2,2,18,133,134,135,49,81, +81,37,7,8,7,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,7,8,8,89,89,5,4,20,4,17,17,17,17,17,17,17,1,1,1,1,1,17,17,17,1,2,3,5,5,5,5,5,6,2,3,4,7,8,8,2,3,2,18,2,2,2,23,24,2,2,2,3,18,19,23,24,24,24,24,20,18,23,7,8,4,4,4,2,18,19,2,3,2,39,81, +81,37,7,8,23,24,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,17,17,5,7,8,24,89,89,21,3,4,20,4,4,4,4,5,6,22,17,17,17,17,17,17,18,1,2,3,4,5,5,5,21,5,5,2,7,7,8,8,24,2,2,18,19,18,18,18,18,18,2,2,2,2,2,18,19,20,3,4,20,20,20,19,7,8,4,2,2,2,18,19,2,2,18,39,81, +81,37,7,8,24,24,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,7,8,8,89,89,89,7,7,7,7,7,7,7,7,7,6,6,6,1,2,3,4,5,6,5,7,7,7,21,21,5,7,7,7,7,7,8,7,7,7,7,8,5,20,2,3,4,2,2,18,18,18,18,2,18,19,20,3,4,20,20,18,19,7,7,8,18,18,18,18,19,2,18,19,39,81, +81,37,23,24,23,24,1,1,1,7,7,7,7,7,7,8,7,7,7,8,1,1,1,5,7,8,24,89,89,89,23,7,23,23,23,23,23,23,7,4,22,22,4,5,6,6,6,6,6,23,23,23,24,8,21,23,23,23,7,7,7,23,23,23,23,7,7,8,4,2,2,2,18,19,20,20,20,18,19,20,3,4,20,20,4,2,19,23,7,8,2,3,4,4,2,2,18,19,39,81, +81,37,7,7,7,7,7,7,7,23,23,7,7,7,7,7,23,23,7,8,1,1,1,21,7,8,8,89,89,89,89,7,7,7,7,7,7,7,7,20,4,22,6,6,6,22,22,22,22,23,23,23,7,24,24,24,24,24,23,23,23,23,23,23,24,23,7,7,8,4,18,18,19,20,4,20,3,2,3,4,4,20,4,20,2,2,3,19,7,8,2,3,4,4,2,18,19,2,39,81, +81,37,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,7,7,8,1,1,1,21,7,7,8,8,89,89,89,23,7,23,23,23,23,23,23,4,20,4,22,22,22,18,19,20,21,23,7,7,23,23,7,7,8,8,8,8,8,8,8,8,8,8,23,23,7,8,20,20,3,4,20,2,2,18,19,20,20,19,20,4,2,18,19,19,7,7,8,4,20,20,2,3,3,4,39,81, +81,37,8,8,3,1,1,1,1,1,1,1,1,1,1,1,1,23,23,24,1,1,1,19,7,8,8,24,89,89,89,23,23,23,23,23,23,23,23,20,4,20,4,6,18,19,5,5,5,23,23,7,6,22,23,23,24,24,8,24,24,24,24,24,24,8,8,8,23,24,8,8,8,9,2,18,18,19,20,4,19,20,4,4,2,3,4,19,23,7,7,8,20,2,3,3,3,4,39,81, +81,37,24,8,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,19,7,8,8,24,89,7,89,89,89,19,3,3,3,23,7,7,20,4,20,4,4,6,5,5,5,7,7,23,22,2,3,17,18,19,8,8,22,6,22,2,2,24,24,24,24,24,24,24,24,7,8,19,18,19,20,20,19,20,4,2,2,3,4,19,20,23,7,8,20,3,3,4,4,20,39,81, +81,37,8,8,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,7,7,8,89,89,89,7,19,19,19,19,19,19,19,7,7,7,7,7,7,20,4,4,5,22,23,23,23,2,1,1,17,18,19,8,8,22,22,2,3,2,2,18,18,19,20,19,20,20,7,8,8,8,2,3,18,19,20,4,2,3,4,20,19,20,3,7,8,3,19,3,4,20,20,39,81, +81,37,8,8,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,23,7,8,8,89,7,23,3,3,19,20,20,19,19,23,23,23,23,23,7,19,20,20,5,6,7,89,89,133,134,135,18,19,20,8,24,22,22,2,2,18,18,19,20,18,19,20,20,2,23,24,24,24,8,8,3,4,20,2,18,19,20,3,19,20,19,7,7,8,3,4,20,18,19,39,81, +81,37,8,8,3,1,1,1,7,8,8,8,8,8,1,1,1,1,1,1,1,1,1,4,23,7,7,8,89,23,23,19,19,19,19,20,20,2,3,4,5,6,7,7,19,5,5,5,5,23,89,89,133,134,135,19,20,21,8,24,6,20,2,2,2,18,19,20,19,20,20,2,18,2,3,23,24,24,24,3,4,2,18,19,20,3,4,19,20,4,23,7,8,4,20,3,4,2,39,81, +81,37,8,8,3,1,1,1,7,8,24,24,24,24,8,1,1,1,1,1,1,1,1,4,20,23,7,8,89,23,18,19,20,20,2,2,2,3,4,3,4,4,7,7,17,5,5,5,21,89,89,89,133,134,135,2,3,4,8,24,2,3,4,18,18,19,20,3,4,20,2,2,2,3,4,20,2,3,2,3,4,2,3,4,2,3,3,19,20,4,20,23,24,20,2,3,4,2,39,81, +81,37,24,8,3,1,4,4,5,7,7,8,8,24,24,8,20,20,19,20,4,3,19,20,2,23,7,7,8,23,18,18,19,20,4,18,18,19,20,19,20,20,7,7,4,4,5,5,2,89,89,89,6,6,5,2,3,4,24,24,2,3,2,18,8,8,8,3,4,18,2,3,18,19,20,20,3,2,3,4,2,3,4,3,3,19,19,19,20,4,20,3,4,2,3,4,20,2,39,81, +81,37,21,22,3,19,20,4,4,5,7,8,24,8,24,24,8,20,19,3,4,4,19,20,4,19,23,7,8,23,20,18,19,20,20,4,2,2,2,2,2,2,7,7,4,20,5,5,18,89,89,89,22,6,2,3,4,20,6,2,2,2,18,19,24,24,8,19,20,3,18,19,18,19,20,18,19,2,3,4,2,3,3,19,19,20,4,3,4,20,20,4,20,2,3,4,2,2,39,81, +81,37,21,22,19,4,4,5,4,4,5,8,24,24,8,24,24,8,20,19,20,20,4,19,20,7,8,8,8,23,20,4,18,19,20,7,7,18,18,18,2,3,7,23,20,18,19,20,17,89,89,89,7,5,2,3,4,20,6,2,18,18,19,8,8,8,24,20,4,2,3,2,2,3,4,18,2,3,4,2,3,3,19,19,20,4,20,19,20,20,4,20,19,2,3,22,2,2,39,81, +81,37,2,3,2,20,20,21,20,4,4,4,5,24,24,8,8,24,8,19,19,3,4,19,20,7,8,24,24,23,4,20,4,18,18,23,7,18,18,18,2,3,7,23,5,6,18,19,17,89,89,7,7,7,7,7,20,20,2,18,18,19,8,24,24,24,24,7,7,7,19,2,3,4,20,2,3,4,20,3,19,19,20,3,4,4,3,19,20,20,4,20,3,2,3,7,7,7,39,81, +81,37,2,3,18,20,21,21,5,5,5,5,5,7,8,24,24,8,24,8,8,19,20,4,7,8,8,89,89,23,20,4,20,4,18,7,7,7,20,2,3,4,23,23,21,22,6,18,19,89,89,23,23,23,23,7,7,7,7,7,7,7,24,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,53,54,53,53,54,54,54,54,7,7,7,7,23,7,7,39,81, +81,37,2,3,18,19,20,21,21,21,21,21,21,23,24,23,24,24,8,24,24,8,8,8,8,8,24,89,89,23,20,20,4,4,20,23,7,7,7,4,4,20,4,5,6,4,1,1,1,89,89,1,17,2,3,23,23,7,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,53,53,53,53,53,53,53,54,23,7,7,7,7,7,7,39,81, +81,37,2,2,3,20,89,7,7,7,7,89,89,89,89,89,23,24,24,23,24,24,24,24,24,24,89,89,89,23,18,19,20,20,4,19,23,7,7,20,4,4,1,1,1,1,17,17,17,89,89,17,2,3,4,20,20,23,23,23,23,20,6,2,3,2,18,19,20,2,18,19,20,18,2,3,2,2,3,4,7,7,20,20,4,20,19,20,20,3,4,7,8,23,23,23,23,23,39,81, +81,37,2,3,3,2,89,7,23,23,7,7,7,7,7,7,89,7,89,89,89,89,89,89,89,89,89,89,7,23,4,4,4,4,20,4,4,7,23,20,20,20,4,4,17,17,18,2,3,89,89,2,3,4,4,19,20,2,18,19,20,21,2,3,4,18,19,20,6,18,19,20,20,2,3,4,2,18,19,20,7,8,3,4,4,4,19,20,3,4,20,7,8,4,3,2,2,3,39,81, +81,37,2,3,3,3,89,7,21,21,5,5,5,5,2,2,2,5,4,3,4,4,89,89,89,7,7,7,7,23,20,20,20,20,4,20,4,23,23,18,19,20,20,20,4,2,3,4,4,89,89,2,3,4,20,5,6,2,18,19,20,6,2,3,2,3,4,20,2,18,19,20,2,3,4,2,18,19,20,20,7,7,8,20,4,4,19,20,3,4,3,23,24,4,4,2,2,3,39,81, +81,37,2,3,3,4,89,7,2,21,21,21,21,21,18,18,18,5,3,3,3,3,4,7,7,23,23,7,7,23,4,19,19,20,20,20,20,20,23,7,7,18,19,20,20,4,4,20,2,89,89,2,3,4,4,5,2,2,3,4,20,2,3,2,18,19,20,6,18,19,20,2,2,3,2,2,3,4,20,4,23,7,7,8,2,3,4,18,19,20,3,2,3,4,4,2,3,4,39,81, +81,37,2,3,19,4,89,7,2,3,4,5,6,6,17,3,3,5,3,19,19,3,3,7,7,7,7,7,7,23,20,4,20,4,4,18,19,20,2,23,7,7,7,19,20,4,2,3,2,89,89,4,4,20,5,6,2,2,3,4,21,2,7,8,8,20,5,2,2,3,4,2,3,2,2,3,4,20,3,4,7,23,7,8,3,4,20,2,3,4,2,3,4,20,4,2,3,4,39,81, +81,37,2,3,3,4,7,7,2,3,4,7,7,7,2,19,19,5,19,19,19,19,19,23,23,23,23,23,7,23,20,20,4,20,20,4,19,20,2,2,7,7,23,19,20,3,4,3,2,89,89,20,4,6,21,2,18,18,7,8,8,8,8,8,24,8,8,2,3,4,20,2,3,2,18,19,20,20,4,20,7,7,7,8,3,4,20,3,4,20,2,3,4,19,2,2,3,4,39,81, +81,37,2,2,3,4,7,7,3,4,5,23,23,7,2,2,3,21,3,4,3,3,3,3,4,3,19,19,7,23,19,20,20,19,20,20,3,3,4,18,21,7,7,19,20,4,4,2,3,89,89,20,4,22,2,2,7,8,8,8,7,8,8,8,24,24,24,8,3,4,2,3,2,18,19,20,4,19,20,20,23,7,7,7,8,4,2,3,4,3,2,3,4,4,2,2,3,4,39,81, +81,37,18,2,3,5,21,2,3,4,5,23,23,23,2,2,3,7,7,20,19,19,19,19,3,3,3,3,23,23,19,19,20,19,19,7,7,19,3,4,4,7,7,4,4,4,3,4,4,89,89,4,4,4,4,2,7,8,24,7,8,8,24,24,2,23,24,24,8,3,4,19,2,3,4,20,20,20,20,4,20,23,23,7,8,4,2,3,4,3,2,3,4,4,18,2,3,4,39,81, +81,37,2,2,3,5,1,2,3,2,2,2,18,18,2,18,19,7,7,18,19,20,19,20,19,19,19,19,19,19,3,19,20,19,19,23,7,4,4,20,20,7,7,7,20,20,19,20,20,7,89,20,20,20,20,18,23,24,7,8,8,24,2,18,18,2,23,24,24,8,8,8,2,3,4,20,20,20,19,20,4,2,2,7,7,8,2,3,4,3,2,3,4,20,18,2,3,4,39,81, +81,37,2,2,3,5,1,2,2,18,18,18,19,2,3,4,20,7,7,19,20,18,2,3,2,19,20,20,19,20,19,19,19,19,19,23,7,20,20,4,4,23,23,7,7,20,20,20,20,89,89,4,1,2,2,2,2,2,7,8,24,18,18,19,20,18,2,23,24,24,24,24,8,19,20,20,20,19,20,19,20,2,2,23,7,7,8,3,4,3,2,3,4,4,18,2,3,4,39,81, +81,37,1,2,3,4,2,2,18,19,20,2,3,4,19,20,19,7,7,2,3,4,18,2,3,19,3,3,3,19,20,20,20,20,20,7,7,19,20,20,4,7,7,7,7,7,4,20,20,89,89,4,17,2,3,2,2,18,7,8,20,3,4,22,1,2,3,4,20,2,23,24,24,20,18,19,20,20,18,19,20,2,2,3,23,7,7,7,8,2,3,4,20,20,2,3,4,4,39,81, +81,37,7,7,7,89,89,7,7,7,7,7,7,7,7,7,7,7,7,2,3,2,2,3,19,20,19,19,19,19,3,3,3,3,3,23,23,20,20,20,20,23,23,23,23,7,7,7,7,89,89,2,2,2,2,18,18,19,7,8,3,4,20,22,2,3,4,4,2,18,18,23,24,8,19,20,20,2,3,4,20,2,3,4,20,23,23,7,7,8,3,4,4,2,2,3,4,20,39,81, +81,37,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,89,89,89,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,23,23,23,23,89,89,5,5,5,5,5,20,22,7,8,3,4,22,22,2,3,4,20,18,18,19,23,24,24,8,20,20,2,3,4,4,4,2,3,4,2,3,23,7,7,8,4,20,2,2,3,4,4,39,81, +81,37,23,23,23,23,23,104,105,106,23,23,23,23,23,23,23,23,23,23,7,7,7,7,89,89,89,89,89,89,89,89,89,89,89,89,89,89,7,8,89,89,89,89,89,89,89,89,7,8,89,21,21,21,21,21,21,22,23,24,19,20,2,2,2,3,4,2,18,19,20,18,23,24,24,8,2,3,4,20,20,20,18,19,20,4,3,4,23,7,7,7,8,2,4,5,4,20,39,81, +81,37,7,8,3,3,4,120,121,122,2,2,2,2,2,2,18,3,4,4,4,20,19,20,18,18,19,3,19,19,19,20,19,7,7,7,7,7,7,7,7,8,7,8,7,7,8,7,7,7,8,17,18,19,20,20,21,22,2,3,2,3,4,2,2,3,4,2,3,4,20,19,20,23,24,24,8,8,20,2,2,3,4,18,2,3,4,20,2,23,23,7,7,8,4,5,4,20,39,81, +81,37,7,8,5,6,6,6,6,18,18,18,18,18,18,18,19,3,3,4,20,4,19,20,2,18,18,19,19,20,4,2,3,23,107,107,108,7,23,23,7,8,8,7,8,23,24,8,23,23,24,18,19,20,21,22,20,21,18,2,18,19,2,18,2,2,2,18,19,20,19,20,2,3,23,24,24,24,8,3,2,3,4,3,18,19,20,4,4,2,3,23,7,7,20,21,4,20,39,81, +81,37,8,8,23,24,7,22,2,2,2,3,4,17,17,2,2,19,3,3,4,20,19,20,4,4,19,20,18,2,3,2,3,4,123,107,108,23,23,23,23,24,24,8,7,8,24,24,8,7,8,22,17,18,19,20,21,22,2,18,19,2,3,4,23,7,7,7,22,22,20,2,3,4,2,18,23,24,24,8,2,3,4,3,4,18,19,20,2,3,4,20,23,7,20,21,4,20,39,81, +81,37,8,8,6,22,7,3,4,18,18,2,2,2,2,18,18,19,19,3,4,3,19,20,4,3,4,18,19,18,2,3,4,2,3,107,108,3,4,2,3,23,24,24,8,7,8,24,24,8,7,8,19,20,21,22,22,2,3,4,20,2,3,4,23,23,23,23,22,22,20,2,3,4,2,3,4,23,24,24,8,8,4,19,20,18,19,20,2,3,4,4,20,23,20,21,4,20,39,81, +81,38,8,8,22,17,7,2,2,2,2,18,18,18,18,19,20,4,2,19,3,3,4,19,20,19,20,4,4,20,2,2,3,4,19,107,108,2,2,18,19,20,23,24,24,8,7,8,24,24,7,8,19,20,21,22,2,18,19,20,18,2,3,4,23,23,24,23,22,22,20,2,3,2,3,4,20,3,23,24,24,24,8,8,20,18,19,20,3,4,20,4,2,3,20,21,3,4,39,81, +81,38,8,8,23,24,7,18,7,8,8,8,19,20,17,7,8,8,3,8,8,8,3,19,20,21,19,20,20,4,4,3,4,20,20,107,108,2,18,19,20,2,3,23,24,24,8,7,8,24,8,7,8,21,2,2,18,19,20,4,2,3,4,2,23,23,23,23,22,22,2,3,4,2,3,4,2,2,2,2,23,24,24,24,8,18,19,20,3,4,4,20,3,4,20,21,3,4,39,81, +81,38,8,8,4,1,7,17,23,2,2,23,4,6,2,23,1,2,3,23,5,5,3,19,20,5,1,1,19,20,20,4,4,19,20,107,108,18,19,20,20,2,3,4,7,8,24,8,7,8,24,8,8,8,3,4,19,20,3,4,2,3,4,18,23,23,23,23,22,22,2,3,2,3,4,20,18,7,8,8,8,20,23,24,24,8,8,8,8,8,20,2,3,4,20,21,4,4,39,81, +81,38,8,8,4,1,7,1,7,1,2,7,4,4,5,8,8,7,3,8,8,7,19,19,20,1,17,17,18,2,19,20,20,19,20,107,108,19,20,4,2,3,4,20,7,7,8,24,8,8,24,24,24,8,8,7,8,3,4,2,3,4,20,23,23,23,23,24,6,22,2,2,18,19,20,7,8,8,8,24,24,2,3,23,24,24,24,24,24,24,8,2,3,4,2,2,3,4,39,81, +81,38,8,7,89,89,23,1,23,8,8,8,20,1,2,3,4,23,3,4,2,23,4,20,17,17,18,19,2,3,4,19,20,4,2,107,108,20,4,20,2,3,4,3,8,7,8,23,24,24,8,24,8,24,7,7,8,8,4,2,3,4,23,23,23,23,23,24,22,2,3,18,19,20,7,8,8,24,24,4,4,3,4,2,3,4,2,3,23,24,24,8,4,20,2,2,3,4,39,81, +81,38,8,7,89,89,17,1,2,2,3,4,20,17,1,8,8,8,3,8,8,8,4,20,2,3,4,21,2,3,4,2,19,20,4,107,108,3,4,2,3,4,20,19,20,7,8,4,23,24,24,24,8,24,8,7,8,7,8,2,3,4,23,23,23,23,23,24,4,4,4,3,4,20,7,8,24,4,4,20,4,3,2,3,4,20,2,3,4,23,24,24,8,3,18,18,19,20,39,81, +81,38,8,7,89,89,2,3,4,2,3,4,4,1,17,17,17,2,3,4,2,3,4,20,2,3,4,2,3,4,20,2,3,19,20,107,108,2,2,18,19,20,2,2,18,19,20,20,4,2,3,23,24,8,24,7,7,8,7,8,3,23,23,23,23,23,23,24,20,20,20,4,4,7,8,8,4,4,20,20,4,2,18,19,20,2,2,3,4,20,23,24,24,8,8,8,20,4,39,81, +81,38,8,7,89,89,2,3,4,2,3,4,20,17,18,19,2,3,4,2,3,4,20,2,2,3,2,3,4,20,4,3,19,19,20,107,108,4,18,19,19,20,2,2,18,19,20,20,4,2,3,23,24,8,24,23,7,7,7,8,23,23,23,23,23,23,23,24,2,19,20,20,20,7,8,24,4,20,19,20,20,18,19,20,4,2,2,3,4,20,2,23,24,24,24,24,8,8,39,81, +81,38,8,7,89,89,2,3,4,2,3,4,3,4,1,17,2,3,4,2,3,4,20,2,3,2,2,3,4,2,3,19,19,20,107,108,108,4,20,3,19,19,20,2,2,18,19,20,2,3,4,23,24,24,8,8,23,23,7,7,8,7,7,7,7,23,24,18,2,3,4,20,19,7,7,8,4,2,2,3,4,19,20,4,20,2,3,4,20,2,3,4,20,3,23,24,24,24,39,81, +81,38,8,7,89,89,2,3,4,2,3,4,3,4,17,2,3,4,20,2,3,4,2,2,3,2,3,4,20,3,19,19,20,2,107,108,124,20,3,4,3,19,20,2,2,18,19,20,18,19,20,19,23,24,24,24,8,8,8,7,7,8,23,23,23,23,24,2,3,3,3,4,20,23,7,8,4,2,18,19,20,4,3,4,4,2,3,4,20,2,3,4,2,3,4,18,19,20,39,81, +81,38,8,7,89,89,3,4,20,2,3,4,4,20,20,2,3,4,20,2,3,4,2,2,3,2,3,3,3,19,20,19,2,3,107,108,20,2,3,4,3,19,20,2,2,18,19,20,19,20,1,2,1,23,24,24,24,24,24,8,8,7,8,7,8,4,18,2,3,19,3,4,20,3,7,7,8,4,19,20,19,20,3,2,2,3,4,4,4,2,3,4,2,3,4,18,19,20,39,81, +81,38,8,7,89,89,3,4,3,3,4,20,4,20,6,2,3,4,2,2,3,2,3,2,3,3,19,19,19,20,3,2,3,4,107,108,4,3,4,2,19,19,20,2,2,18,19,20,20,1,1,1,17,2,3,23,24,23,24,24,24,8,8,8,24,4,2,3,4,20,19,3,4,3,23,7,8,20,4,3,3,4,3,2,3,4,20,4,4,2,3,4,2,3,4,2,2,3,39,81, +81,38,8,7,89,4,3,2,19,19,3,3,3,3,3,3,3,3,3,3,3,3,3,3,19,19,20,4,2,3,4,4,19,107,108,108,20,19,20,18,19,19,20,2,2,18,19,20,4,4,4,4,18,2,3,4,23,24,24,23,24,24,24,24,24,3,4,4,20,2,3,19,3,3,4,7,7,8,20,4,19,20,4,2,3,4,4,20,2,3,4,20,2,3,4,3,2,3,39,81, +81,38,8,7,89,3,4,2,19,20,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,3,2,3,4,4,20,20,107,108,124,3,4,20,2,2,19,20,2,2,18,19,20,4,4,4,20,17,18,19,20,18,19,23,24,24,24,24,23,24,8,3,4,2,2,3,4,19,3,4,23,7,7,8,4,4,19,20,3,4,20,4,7,8,3,4,4,2,3,4,3,18,2,39,81, +81,38,8,7,89,19,3,3,4,19,20,4,3,4,2,3,4,2,2,3,4,2,2,3,4,2,2,3,4,20,20,20,107,108,108,2,3,4,2,3,4,19,20,2,2,18,19,20,20,20,3,4,6,2,3,4,6,5,6,2,2,3,7,23,24,24,8,4,18,18,3,4,19,3,4,19,23,7,7,8,4,19,20,3,4,4,4,7,8,8,4,4,2,3,4,3,2,2,39,81, +81,38,8,7,89,2,19,3,3,19,20,20,19,20,2,3,4,2,2,3,2,2,3,4,20,2,3,4,4,3,4,20,107,108,124,3,4,2,2,3,4,19,20,2,2,18,19,20,4,18,19,20,4,4,4,20,22,2,3,4,2,2,23,7,23,24,24,3,4,4,3,4,19,3,3,3,4,23,23,24,4,19,20,3,4,4,20,23,24,24,20,4,2,3,4,3,2,2,39,81, +81,38,8,7,89,3,19,19,19,3,19,20,4,2,3,4,20,18,2,3,2,2,3,4,2,2,3,4,20,4,20,4,107,108,2,3,4,18,2,3,4,19,20,2,8,8,19,20,4,18,18,19,20,20,4,2,2,3,4,20,18,18,19,23,7,23,24,8,3,4,3,4,3,19,3,3,4,20,20,19,20,19,3,4,4,20,4,7,23,24,4,20,2,3,4,2,3,4,39,81, +81,38,8,7,89,3,3,4,19,3,3,19,20,4,3,4,4,18,2,2,3,4,2,2,2,3,4,4,4,20,2,107,108,108,3,2,3,4,2,3,4,3,19,20,8,8,18,19,20,3,4,3,18,19,20,4,18,19,20,2,18,19,20,2,23,23,24,24,8,3,4,4,19,20,3,4,20,3,3,19,20,20,19,20,4,20,4,7,23,24,4,4,2,3,4,2,3,4,39,81, +81,38,8,7,89,3,19,3,4,19,3,19,20,20,3,4,20,2,2,2,3,4,2,18,2,2,2,3,4,20,2,107,108,124,4,4,4,4,2,3,4,3,19,8,23,8,8,8,20,19,20,19,20,18,19,20,4,2,2,18,19,20,2,2,18,23,23,24,24,8,3,4,5,5,3,4,19,19,3,3,19,20,3,4,4,20,2,7,23,24,4,4,2,3,4,2,3,4,39,81, +81,38,8,7,89,3,2,3,3,4,19,3,19,20,4,4,2,3,2,2,3,4,18,18,18,18,2,3,4,4,18,107,108,2,2,2,2,3,4,4,4,19,19,23,23,7,8,8,8,8,8,2,3,18,19,20,20,18,18,19,20,2,18,18,19,20,23,23,24,24,8,3,21,5,4,20,4,20,19,19,19,20,19,20,20,3,2,23,23,24,4,4,2,3,4,2,3,4,39,81, +81,38,8,8,89,4,2,19,3,4,3,19,19,20,20,4,2,3,2,3,4,2,18,19,20,20,18,19,20,20,107,108,108,18,18,18,18,2,2,2,3,4,19,23,7,7,7,7,8,8,8,8,2,18,8,8,20,19,20,2,18,18,19,20,2,2,18,23,23,24,24,8,8,21,4,4,20,4,18,19,20,20,19,20,20,3,3,23,24,7,20,20,2,3,4,2,3,4,39,81, +81,38,8,8,89,2,3,4,19,3,3,4,19,20,4,4,4,4,2,3,2,18,2,18,18,2,2,18,19,107,108,108,124,3,4,20,4,18,18,18,2,19,20,23,7,18,7,7,7,8,8,8,8,18,8,8,8,8,8,18,19,20,2,18,18,18,19,20,23,23,24,24,24,24,8,3,3,3,4,3,3,3,3,3,3,3,7,23,24,7,20,4,2,3,4,2,3,4,39,81, +81,38,8,8,89,2,3,4,3,19,3,4,20,19,20,20,4,20,4,2,18,19,2,3,2,18,18,18,107,108,108,124,18,19,20,3,4,4,3,4,19,20,2,23,7,19,20,7,7,7,7,8,8,8,7,7,7,7,7,8,8,18,18,19,20,3,4,4,20,2,23,7,23,24,24,8,8,3,3,19,19,19,19,3,4,7,23,23,24,4,3,4,2,3,4,2,3,4,39,81, +81,38,8,8,89,2,3,3,4,20,19,3,4,19,20,19,20,4,20,4,19,2,3,4,2,3,4,107,108,108,124,3,4,3,3,3,4,20,19,19,20,2,2,23,7,20,20,3,8,7,7,7,7,7,8,8,8,7,7,7,7,3,3,3,3,3,3,3,3,3,3,23,7,8,7,7,7,7,8,4,3,4,4,19,7,23,23,24,19,20,3,4,2,3,2,3,4,4,39,81, +81,38,8,8,89,8,3,3,4,19,3,19,3,4,19,20,19,20,4,20,4,3,3,3,3,107,108,108,108,124,2,3,3,3,4,4,3,4,19,20,2,2,18,23,7,20,3,19,7,8,7,7,7,7,7,7,8,8,8,7,7,19,19,3,3,3,3,3,3,3,19,19,7,8,23,23,23,7,7,7,7,7,7,7,23,23,24,20,3,4,3,4,2,3,2,2,3,4,39,81, +81,38,8,8,89,8,19,3,3,4,19,3,3,3,4,19,20,19,20,4,20,4,107,108,108,108,108,124,124,20,4,4,5,5,5,5,5,5,19,20,2,2,8,23,7,3,19,3,7,7,8,7,7,7,8,8,7,8,8,7,7,8,5,3,4,3,4,19,19,19,20,4,8,8,8,20,20,23,23,23,23,23,23,23,23,24,4,18,19,20,19,20,2,3,2,2,3,4,39,81, +81,38,8,8,89,89,19,19,19,3,3,19,19,19,3,4,20,5,5,5,5,5,107,108,124,124,124,5,5,5,5,5,5,5,5,5,5,5,3,3,3,8,23,23,7,19,3,5,7,7,7,7,7,7,8,7,8,8,8,7,7,7,19,19,20,19,3,3,4,3,4,4,7,7,8,20,3,4,4,2,18,19,20,4,2,3,4,3,4,20,2,3,2,3,18,2,3,4,39,81, +81,38,8,8,89,89,3,4,19,19,19,19,19,3,19,3,3,3,19,20,20,19,123,124,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,8,8,23,23,7,19,3,5,5,7,7,7,7,7,7,7,7,8,7,8,8,7,7,8,3,19,19,19,19,20,19,20,20,23,7,8,4,4,4,2,2,18,19,20,20,3,4,20,3,4,2,18,19,2,3,4,2,3,4,39,81, +81,38,8,8,89,89,3,4,19,3,3,3,19,19,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,19,23,23,23,7,4,3,19,20,19,20,20,7,8,8,7,7,7,7,8,8,8,7,7,7,19,20,20,19,19,19,19,19,19,23,7,8,20,20,20,2,3,18,19,20,4,3,4,3,4,20,2,2,3,2,3,4,2,3,4,39,81, +81,38,8,8,89,89,3,4,3,19,19,19,19,19,19,19,19,20,19,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,8,8,8,4,4,4,4,4,3,4,2,2,7,8,7,7,8,7,8,7,8,8,7,7,20,20,4,20,20,3,4,20,2,23,7,8,3,4,2,2,3,2,3,4,20,4,20,3,4,4,2,2,3,2,3,4,2,7,8,39,81, +81,38,8,8,89,89,3,4,3,4,5,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,20,5,5,5,7,8,8,8,20,20,20,20,20,20,4,4,4,18,19,7,7,7,7,8,7,8,8,7,7,7,19,20,20,2,2,3,4,18,18,23,7,8,3,4,2,3,4,18,19,20,3,4,18,19,20,4,2,18,19,2,3,4,7,7,8,39,81, +81,38,8,8,7,89,3,4,3,4,5,2,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,8,8,8,8,20,20,3,4,18,19,20,20,20,20,4,18,18,18,7,7,7,7,7,7,7,7,19,20,19,20,4,3,4,20,19,20,4,7,7,8,4,2,3,2,3,4,20,3,4,2,3,4,4,2,2,3,7,8,8,23,23,24,39,81, +81,38,8,8,7,89,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,23,23,23,7,8,8,8,8,5,5,18,19,20,20,20,18,20,19,20,20,19,20,20,20,7,7,2,18,18,18,19,20,2,18,19,20,4,20,4,4,2,2,23,7,8,4,4,3,18,19,20,7,7,8,8,8,8,8,8,8,8,8,24,24,24,24,4,39,81, +81,38,8,8,8,89,5,5,5,5,5,5,5,5,5,5,2,2,2,2,3,2,5,5,5,5,5,23,23,23,23,8,8,8,23,8,8,19,20,20,20,20,20,20,19,20,20,19,20,20,3,4,4,2,2,18,18,18,19,20,18,18,18,18,19,19,20,20,4,20,20,3,4,23,7,8,20,20,4,3,4,4,23,23,24,24,24,24,24,24,24,24,24,3,4,2,3,4,39,81, +81,38,8,8,8,89,5,5,5,5,2,2,5,5,19,20,2,18,18,2,3,2,3,4,2,23,7,8,8,8,8,8,23,7,8,8,19,20,20,20,20,20,20,20,20,20,19,20,20,3,2,2,2,18,18,19,20,18,18,19,20,3,4,20,19,20,19,20,20,19,20,19,20,23,7,7,8,19,20,19,20,20,20,4,2,3,4,20,4,18,2,3,2,3,4,2,3,4,39,81, +81,38,8,8,8,89,5,5,3,4,2,3,4,2,3,4,2,18,19,2,3,2,3,4,23,23,7,8,23,19,19,20,2,18,18,19,20,2,20,20,20,19,20,20,20,19,20,20,3,19,18,18,18,19,20,19,20,2,2,2,3,4,4,20,20,20,20,4,3,2,3,4,19,23,23,7,8,2,18,18,19,20,20,4,2,3,4,3,4,3,18,19,2,3,4,2,3,4,39,81, +81,38,8,8,8,89,3,4,19,20,2,3,2,3,4,20,2,2,3,2,3,2,3,23,8,8,23,18,18,18,18,18,18,19,20,2,20,20,19,20,20,20,20,19,20,19,20,8,8,8,8,20,18,19,20,18,18,18,2,3,4,20,20,2,2,2,2,2,2,2,2,2,2,18,23,7,7,8,19,20,4,4,3,4,18,19,20,3,4,3,2,3,2,3,4,2,3,4,39,81, +81,38,8,8,8,89,89,4,19,20,2,3,2,3,4,18,2,18,2,3,4,8,7,89,8,23,2,3,2,19,19,20,20,19,20,20,19,20,20,20,20,20,19,20,20,19,8,8,8,8,8,8,8,8,8,8,8,8,8,4,20,18,2,2,2,2,2,2,18,18,18,18,8,8,23,23,7,8,2,2,2,2,3,4,2,3,4,3,4,3,2,3,2,3,4,2,3,4,39,81, +81,38,8,8,8,89,89,4,19,20,2,3,2,3,4,2,2,18,2,3,8,7,89,89,23,4,2,2,18,4,4,20,20,20,19,20,20,20,20,20,20,19,20,20,20,2,8,8,8,8,8,7,7,7,7,7,7,7,7,8,8,8,8,18,18,18,18,18,19,8,8,8,8,7,23,24,7,7,8,18,2,3,4,4,2,3,4,2,3,4,2,3,2,3,4,2,3,4,39,81, +81,38,8,8,8,89,89,3,4,20,2,3,18,19,20,2,18,18,8,7,89,89,89,89,23,20,2,18,19,20,20,20,19,20,20,20,20,20,20,18,20,20,20,8,8,8,8,8,7,7,7,3,4,18,19,20,20,23,7,7,7,7,7,8,8,8,8,8,8,8,7,7,7,2,3,23,23,7,8,4,4,4,4,20,2,3,4,2,3,4,2,3,2,3,4,2,3,4,39,81, +81,38,8,8,8,8,89,89,4,2,2,2,3,4,20,2,3,8,7,89,89,89,89,89,23,2,18,19,20,20,20,19,20,20,3,20,20,18,18,20,8,8,8,7,8,7,7,7,3,4,3,4,20,20,18,18,18,19,20,3,4,23,7,7,7,7,7,7,7,7,4,4,4,4,19,23,24,7,7,8,20,20,20,4,2,3,4,2,3,4,18,19,2,3,4,2,3,4,39,81, +81,38,8,8,8,8,89,89,4,2,2,2,3,4,8,7,89,89,89,89,89,89,89,23,4,2,2,3,2,20,19,20,20,20,20,20,18,18,8,8,7,7,7,7,7,7,7,20,19,20,19,20,19,20,20,18,19,20,18,19,20,20,18,19,20,2,3,4,4,19,20,20,20,20,2,2,23,23,7,8,20,4,4,4,2,3,4,2,3,4,18,19,2,3,4,2,3,4,39,81, +81,38,8,8,8,8,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,2,3,4,20,2,3,4,4,20,2,20,20,20,8,8,8,7,7,7,7,7,8,8,20,20,18,18,19,20,20,19,20,18,18,18,18,18,18,18,18,18,18,18,18,2,3,4,4,18,18,18,19,20,18,2,3,4,7,7,7,7,8,7,7,7,7,7,7,7,7,7,8,3,2,2,3,4,39,81, +81,38,8,8,89,8,8,89,89,89,89,89,89,89,89,89,89,89,89,89,2,2,3,4,20,2,3,4,4,20,2,8,8,8,8,8,7,7,7,7,8,8,7,7,18,18,19,20,2,18,18,18,18,19,20,20,19,20,19,20,18,19,20,20,18,2,3,4,19,20,3,4,2,2,18,18,19,20,23,23,23,7,8,23,23,7,23,23,23,23,23,7,8,3,18,2,3,4,39,81, +81,38,8,8,89,8,8,89,89,89,89,89,89,89,89,89,89,2,3,2,3,2,3,4,4,2,3,4,4,20,2,7,7,7,8,8,7,8,7,7,7,7,7,2,2,2,2,2,2,18,18,18,2,3,4,20,18,19,20,19,20,2,2,2,2,2,3,4,18,2,3,4,2,3,18,18,19,20,3,4,7,8,8,23,24,23,23,24,7,7,8,23,24,3,2,2,3,4,39,81, +81,38,8,8,8,89,8,2,2,2,2,18,19,20,2,18,19,2,3,2,3,2,3,4,20,2,3,4,4,20,2,7,7,7,8,8,7,7,4,4,20,2,2,2,2,2,18,18,18,2,3,4,4,19,20,2,2,2,2,2,2,2,2,2,2,3,4,4,2,2,3,4,18,19,2,18,19,20,19,7,8,8,24,2,3,4,19,2,8,8,8,20,2,3,2,2,3,4,39,81, +81,38,8,8,8,89,8,2,2,2,2,3,4,20,18,19,20,2,3,18,19,2,3,4,4,18,19,4,4,20,2,2,2,2,7,7,7,4,4,4,4,18,2,2,18,18,19,2,2,18,19,20,20,20,4,2,2,2,8,8,2,2,2,2,2,2,3,4,3,2,3,4,18,2,3,4,20,2,3,7,8,24,3,2,3,4,3,18,18,18,19,20,2,2,18,2,3,4,39,81, +81,38,8,8,8,89,8,2,2,2,18,19,20,20,18,19,20,2,2,18,19,2,3,4,2,2,3,18,4,4,18,18,18,18,2,2,2,2,4,4,18,18,18,18,19,2,2,18,18,19,20,2,3,4,20,18,18,18,8,8,8,18,18,18,2,3,4,4,2,3,4,20,19,2,3,4,18,2,7,8,24,2,2,18,19,20,3,4,4,3,2,3,2,18,19,2,3,4,39,81, +81,38,8,8,89,7,8,18,2,18,18,19,20,19,19,19,19,19,19,19,19,19,3,4,2,2,2,3,2,2,4,4,4,18,18,18,18,18,4,18,2,2,3,4,3,4,18,19,20,18,2,3,4,20,2,2,2,2,7,7,7,2,2,2,3,4,4,4,2,3,4,18,19,2,3,4,18,7,23,24,4,2,18,19,20,2,3,4,20,19,18,19,18,18,19,2,3,4,39,81, +81,38,8,8,89,7,89,19,18,19,20,20,20,20,20,19,20,20,20,20,20,20,2,3,4,2,18,19,18,18,18,19,20,19,20,20,2,2,3,4,18,18,19,20,19,20,20,18,18,2,3,4,20,2,2,2,2,8,7,7,7,2,2,3,4,4,4,4,2,3,4,18,19,2,3,4,2,7,8,20,4,4,5,5,5,18,19,20,20,2,3,4,20,19,20,2,3,4,39,81, +81,38,8,8,89,89,89,2,2,3,4,20,20,19,19,20,20,20,19,19,18,19,2,2,2,18,18,19,20,20,20,18,18,2,2,3,4,18,19,20,19,20,18,19,20,18,18,2,2,3,7,8,8,8,8,3,4,7,7,7,2,3,4,4,4,4,19,20,2,3,4,2,2,4,5,4,18,19,2,4,5,5,5,21,21,18,19,20,5,18,19,20,18,20,18,2,3,4,39,81, +81,38,8,8,89,89,89,2,89,89,4,20,20,20,20,19,19,19,19,20,18,18,18,7,8,8,8,8,8,8,8,2,2,18,18,19,20,20,2,2,2,2,3,4,7,8,8,8,8,8,8,8,8,8,8,8,8,7,7,3,4,4,4,4,4,19,20,2,2,3,4,2,2,20,21,4,18,19,2,5,5,21,21,20,3,2,3,4,21,18,19,7,7,7,7,7,8,4,39,81, +81,38,8,8,89,89,8,8,8,8,8,7,7,7,7,20,20,20,20,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,20,2,2,3,7,8,8,8,8,8,8,8,8,8,8,8,8,8,3,8,8,8,8,8,8,8,8,8,8,7,8,8,2,18,2,3,4,2,2,4,5,4,2,2,4,5,5,5,19,20,2,18,19,20,7,8,7,23,23,23,23,7,7,8,39,81, +81,38,8,8,8,8,7,7,7,7,7,7,8,8,8,8,7,8,8,8,8,8,8,8,8,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,20,20,20,18,19,20,20,19,8,8,8,8,8,8,8,8,8,8,2,2,2,3,2,2,3,4,4,4,5,5,5,5,21,21,4,4,4,4,20,3,8,8,7,7,8,8,8,8,8,8,39,81, +81,84,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,20,20,20,20,20,20,20,20,20,20,20,8,8,8,8,8,8,8,8,20,20,20,20,20,20,20,20,18,18,18,19,20,18,18,18,18,2,3,4,2,8,8,8,8,18,18,18,2,3,18,18,19,20,20,20,21,21,21,21,20,20,20,20,20,20,4,3,8,8,23,23,24,24,24,24,24,24,39,81, +81,66,34,34,35,35,34,34,34,34,34,34,34,8,8,8,8,8,34,34,34,34,34,34,34,34,34,35,34,34,34,34,34,34,34,34,34,35,34,34,34,34,34,34,34,34,34,34,34,34,34,35,34,34,34,34,34,34,34,34,34,35,34,34,34,34,34,34,34,35,34,34,34,34,34,34,34,34,34,35,34,34,34,34,34,34,35,34,34,34,34,34,34,34,35,34,34,35,67,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81 + + + + + + + + diff --git a/DepthsBelow/DepthsBelowContentPipeline/MapProcessor.cs b/DepthsBelow/DepthsBelowContentPipeline/MapProcessor.cs index 706befd..48ea365 100755 --- a/DepthsBelow/DepthsBelowContentPipeline/MapProcessor.cs +++ b/DepthsBelow/DepthsBelowContentPipeline/MapProcessor.cs @@ -12,7 +12,7 @@ using TiledLib; namespace DepthsBelowContentPipeline { // Each tile has a texture, source rect, and sprite effects. - [ContentSerializerRuntimeType("DepthsBelow.Tile, DepthsBelow")] + [ContentSerializerRuntimeType("DepthsBelow.MapTile, DepthsBelow")] public class MapTileContent { public ExternalReference Texture; @@ -20,15 +20,34 @@ namespace DepthsBelowContentPipeline public SpriteEffects SpriteEffects; } + [ContentSerializerRuntimeType("DepthsBelow.MapObject, DepthsBelow")] + public class MapObjectContent + { + //public MapObjectType ObjectType; + public string Name; + public string Type; + public Rectangle Bounds; + public List Points; + } + // For each layer, we store the size of the layer and the tiles. - [ContentSerializerRuntimeType("DepthsBelow.Layer, DepthsBelow")] + [ContentSerializerRuntimeType("DepthsBelow.MapLayer, DepthsBelow")] public class MapLayerContent { public int Width; public int Height; public string Name; + } + [ContentSerializerRuntimeType("DepthsBelow.MapTileLayer, DepthsBelow")] + public class MapTileLayerContent : MapLayerContent + { public MapTileContent[] Tiles; } + [ContentSerializerRuntimeType("DepthsBelow.MapObjectLayer, DepthsBelow")] + public class MapObjectLayerContent : MapLayerContent + { + public MapObjectContent[] Objects; + } // For the map itself, we just store the size, tile size, and a list of layers. [ContentSerializerRuntimeType("DepthsBelow.Map, DepthsBelow")] @@ -44,8 +63,6 @@ namespace DepthsBelowContentPipeline { public override MapContent Process(TiledLib.MapContent input, ContentProcessorContext context) { - //System.Diagnostics.Debugger.Launch(); - // build the textures TiledHelpers.BuildTileSetTextures(input, context, "maps"); @@ -56,18 +73,49 @@ namespace DepthsBelowContentPipeline MapContent output = new MapContent { TileWidth = input.TileWidth, - TileHeight = input.TileHeight + TileHeight = input.TileHeight, }; // iterate all the layers of the input foreach (LayerContent layer in input.Layers) { + // Get layer objects + var molc = layer as TiledLib.MapObjectLayerContent; + if (molc != null) + { + //System.Diagnostics.Debugger.Launch(); + // create the new layer + MapObjectLayerContent outLayer = new MapObjectLayerContent + { + Width = molc.Width, + Height = molc.Height, + Name = molc.Name + }; + + outLayer.Objects = new MapObjectContent[molc.Objects.Count]; + for (int i = 0; i < molc.Objects.Count; i++) + { + var layerObject = molc.Objects[i]; + outLayer.Objects[i] = new MapObjectContent + { + //ObjectType = layerObject.ObjectType, + Name = layerObject.Name, + Type = layerObject.Type, + Bounds = layerObject.Bounds, + Points = layerObject.Points + }; + } + + output.Layers.Add(outLayer); + } + // we only care about tile layers in our demo TileLayerContent tlc = layer as TileLayerContent; + if (tlc != null) { // create the new layer - MapLayerContent outLayer = new MapLayerContent + MapTileLayerContent outLayer = new MapTileLayerContent { Width = tlc.Width, Height = tlc.Height,