コード例 #1
0
ファイル: Cannon.cs プロジェクト: Martenfur/Monofoxe.Demo
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: Spikes.cs プロジェクト: Martenfur/Monofoxe.Demo
        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))
                );
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }