public Cannon(Vector2 position, ShootingMode mode, float rotation, float baseRotation, double firePeriod, double initialDelay, Layer layer) : base(layer) { AddComponent(new PositionComponent(position)); _mode = mode; var solid = new SolidComponent(); var collider = new RectangleCollider(); collider.Size = Vector2.One * Size; collider.Position = position; solid.Collider = collider; AddComponent(solid); _rotation = rotation; _baseRotation = baseRotation; var rotationRad = MathHelper.ToRadians(rotation); _direction = new Vector2( Math.Sign((int)(Math.Cos(rotationRad) * 100)), // Double will be a tiny value instead of zero, so we need this. Math.Sign((int)(Math.Sin(rotationRad) * 100)) ); _fireAlarm = new AutoAlarm(firePeriod); _initialDelayAlarm = new Alarm(); _initialDelayAlarm.Set(initialDelay); }
protected override List <Layer> BuildTileLayers(List <Tileset> tilesets) { // Letting basic layer builder do its stuff. var layers = base.BuildTileLayers(tilesets); // Now we need to add position and collider components to entity to make it count as a solid. foreach (var layer in layers) { // Getting list of all tilemaps on this layer. var tilemaps = layer.GetEntityListByComponent <BasicTilemapComponent>(); foreach (var tilemap in tilemaps) { var tilemapComponent = tilemap.GetComponent <BasicTilemapComponent>(); tilemapComponent.Padding = 3; // Padding is increased, so biffer tiles like trees won't disappear while still on screen. // Making collider. var collider = new TilemapCollider(); collider.Tilemap = tilemapComponent; collider.Size = new Vector2( tilemapComponent.Width * tilemapComponent.TileWidth, tilemapComponent.Height * tilemapComponent.TileHeight ); var solid = new SolidComponent(); solid.Collider = collider; // Making collider. tilemap.AddComponent(solid); tilemap.AddComponent(new PositionComponent(tilemapComponent.Offset)); } } return(layers); }
public Spikes(Vector2 position, float rotation, Layer layer) : base(layer) { AddComponent(new PositionComponent(position)); var solid = new SolidComponent(); var collider = new RectangleCollider(); collider.Size = Vector2.One * Size; collider.Position = position; solid.Collider = collider; AddComponent(solid); _rotation = rotation; var rotationRad = MathHelper.ToRadians(rotation - 90); _harmVector = new Vector2( Math.Sign((int)(Math.Cos(rotationRad) * 100)), // Double will be a tiny value instead of zero, so we need this. Math.Sign((int)(Math.Sin(rotationRad) * 100)) ); }
public Switchblock(Vector2 position, bool active, bool switchOnce, Layer layer) : base(layer) { Active = active; _switchOnce = switchOnce; AddComponent(new PositionComponent(position)); var solid = new SolidComponent(); var collider = new RectangleCollider(); collider.Size = Vector2.One * Size; collider.Position = position + Vector2.One * Size / 2; solid.Collider = collider; solid.Collider.Enabled = active; AddComponent(solid); }
public MovingPlatofrm(Layer layer, Vector2 position, float width, bool looped, float pathSpeed, List <Vector2> pathPoints) : base(layer) { Width = width; var cPosition = new PositionComponent(position); var cSolid = new SolidComponent(); var collider = new PlatformCollider(); collider.Size = new Vector2(width * BaseSize, BaseSize / HeightDivider); cSolid.Collider = collider; var cPath = new PathComponent(); cPath.Position = cPosition.Position; cPath.Points = pathPoints; cPath.Speed = pathSpeed; cPath.Looped = looped; AddComponent(cPosition); AddComponent(cSolid); AddComponent(cPath); }