protected override void Update(GameTime gameTime) { base.Update(gameTime); if (!form.ContainsFocus) { return; } HandleViewportSizeChange(); MouseStateExtended mouseState = MouseExtended.GetState(); KeyboardStateExtended keyboardState = KeyboardExtended.GetState(); Point mousePosition = mouseState.Position; Vector2 worldPosition = camera.ScreenToWorld(mousePosition.ToVector2()); TileLayer.TilePositionDetail tilePositionDetail = myMap.GetTileAtPosition(worldPosition, ActiveLayer); CollisionLayer.CellPositionDetail cellPositionDetail = myMap.GetCellAtPosition(worldPosition); Tile tile = tilePositionDetail.Tile; if (mouseState.IsButtonDown(MouseButton.Right)) { camera.Move(mouseState.DeltaPosition.ToVector2() / camera.Zoom); } else if (mouseState.DeltaScrollWheelValue != 0) { camera.Zoom = MathHelper.Clamp(camera.Zoom - mouseState.DeltaScrollWheelValue * 0.001f, camera.MinimumZoom, camera.MaximumZoom); } if (ActivePaintingTool != null) { if (ActivePaintingTool.IsValidPosition(myMap, keyboardState, tilePositionDetail, cellPositionDetail)) { if (mouseState.IsButtonDown(MouseButton.Left)) { ActivePaintingTool.Paint(myMap, keyboardState, tilePositionDetail, cellPositionDetail); } else { ActivePaintingTool.Hover(myMap, keyboardState, tilePositionDetail, cellPositionDetail); } } } }
public override void Paint(Map map, KeyboardStateExtended keyboardState, TileLayer.TilePositionDetail tilePosition, CollisionLayer.CellPositionDetail cellPosition) { if (keyboardState.IsControlDown()) { map.CollisionLayer.UpdateCell(false, cellPosition.Coordinates.X, cellPosition.Coordinates.Y); } else { map.CollisionLayer.UpdateCell(true, cellPosition.Coordinates.X, cellPosition.Coordinates.Y); } }
public override bool IsValidPosition(Map map, KeyboardStateExtended keyboardState, TileLayer.TilePositionDetail tilePosition, CollisionLayer.CellPositionDetail cellPosition) { return(cellPosition.IsValidPosition); }
public override void Hover(Map map, KeyboardStateExtended keyboardState, TileLayer.TilePositionDetail tilePosition, CollisionLayer.CellPositionDetail cellPosition) { }
public abstract void Paint(Map map, KeyboardStateExtended keyboardState, TileLayer.TilePositionDetail tilePosition, CollisionLayer.CellPositionDetail cellPosition);
public abstract bool IsValidPosition(Map map, KeyboardStateExtended keyboardState, TileLayer.TilePositionDetail tilePosition, CollisionLayer.CellPositionDetail cellPosition);
public override void Paint(Map map, KeyboardStateExtended keyboardState, TileLayer.TilePositionDetail tilePosition, CollisionLayer.CellPositionDetail cellPosition) { tilePosition.Tile.TilesetIndex = BrushTile.TilesetIndex; tilePosition.Tile.TileIndex = BrushTile.TileIndex; }
public override void Hover(Map map, KeyboardStateExtended keyboardState, TileLayer.TilePositionDetail tilePosition, CollisionLayer.CellPositionDetail cellPosition) { map.AddImmediateTile(tilePosition.Coordinates.X, tilePosition.Coordinates.Y, BrushTile); }