public void IsoMathService_MapTileToScreenPositionINT_ShouldEqualX32Y48() { var result = _isoMathService.MapTileToScreenPosition(2, 1); Assert.AreEqual(32, result.X); Assert.AreEqual(48, result.Y); }
/// <inheritdoc /> public override void Process(Entity entity) { Vector2 mousePosition = _inputService.GetMousePosition(); Position position = entity.GetComponent <Position>(); Paintable paintable = entity.GetComponent <Paintable>(); mousePosition.X += _camera.Position.X; mousePosition.Y += _camera.Position.Y; Vector2 tilePosition = _isoMathService.ScreenPositionToMapTile(mousePosition); Vector2 worldPosition = _isoMathService.MapTileToScreenPosition(tilePosition); position.X = worldPosition.X; position.Y = worldPosition.Y; if (_inputService.IsLeftMouseDown()) { } }
/// <inheritdoc /> public override void Process(Entity entity) { LoadEmptyTileset(); Renderable renderable = entity.GetComponent <Renderable>(); Map map = entity.GetComponent <Map>(); int tileWidth = _engineService.TileWidth; int tileHeight = _engineService.TileHeight; for (int x = 0; x < map.Width; x++) { for (int y = map.Height - 1; y >= 0; y--) { Vector2 screenPosition = _isoMathService.MapTileToScreenPosition(x, y); Vector2 position = new Vector2( screenPosition.X, screenPosition.Y); Tile tile = map.Tiles[x, y]; int sourceX = 0; int sourceY = 0; Texture2D renderTexture = _emptyCell; if (tile != null) { sourceX = tileWidth * tile.SourceX; sourceY = tileHeight * tile.SourceY; renderTexture = renderable.Texture; } Rectangle source = new Rectangle( sourceX, sourceY, tileWidth, tileHeight); _spriteBatch.Draw( renderTexture, position, source, Color.White, 0.0f, _origin, 1.0f, SpriteEffects.None, 0.0f); } } // Move camera to focus more on the area for the first run time. if (!_renderedOnce) { _camera.Position = new Vector2( _camera.Position.X - _camera.BoundingRectangle.Width / 2.0f, _camera.Position.Y - 50 ); } _renderedOnce = true; }