Exemplo n.º 1
0
        public Player(ScreenManager screenManager, string propName, Vector2 pos, World world, int columns, int rows, Level sourceLevel) : base(screenManager, propName, new Vector2(0.75f, 0.25f), new Vector2(0.75f, 0.75f), columns, rows, sourceLevel)
        {
            _x            = 0;
            _y            = 0;
            _baseVelocity = 0.05f;
            Health        = 100;

            ObjectBody          = world.CreateCapsule(_objectBodySize.X, 0.25f, 10, _objectBodySize.Y, 10, 1f, pos);
            ObjectBody.BodyType = BodyType.Dynamic;
            ObjectBody.SetRestitution(0f);
            ObjectBody.Mass          = 2f;
            ObjectBody.FixedRotation = true;
            ObjectBody.SetFriction(1.0f);
            ObjectBody.OnSeparation += Seperation;
            ObjectBody.Tag           = "Player";

            AnimationTimeSpans = new Dictionary <CreatureState, TimeSpan>();
            AnimationTimeSpans[CreatureState.Moving] = TimeSpan.FromMilliseconds(200);
            foreach (var fixture1 in ObjectBody.FixtureList)
            {
                fixture1.Tag = "Player";
            }

            ObjectBody.SetCollisionCategories((Category)(Category.All - Category.Cat1));

            //create bottom rectangle for floor detection
            Vertices vertices = PolygonTools.CreateRectangle(0.1f, 0.1f);

            vertices.Translate(new Vector2(0f, -0.4f));
            Shape   rectangle = new PolygonShape(vertices, 1f);
            Fixture fixture   = ObjectBody.CreateFixture(rectangle);

            fixture.Tag          = "AirDetectorBottom";
            fixture.IsSensor     = true;
            fixture.OnSeparation = fixtureSeperated;
            fixture.OnCollision += Colided;
            //set sound effect

//            PlayerBody.CreateRectangle(0.2f, 0.2f, 1f, new Vector2(0f, -0.8f)).IsSensor = true;
            _inAir             = true;
            _isMoving          = false;
            _playerMovingForce = new Vector2(0, 0);
        }
Exemplo n.º 2
0
        public Ground(ScreenManager screenManager, string propName, Vector2 pos, World world, int columns, int rows, List <List <char> > level, Int32 i, Int32 j, Level sourceLevel) : base(screenManager, propName, new Vector2(1f, 1f), new Vector2(1f, 1f), columns, rows, sourceLevel)
        {
            ObjectBody          = world.CreateRectangle(_objectBodySize.X, _objectBodySize.Y, 1f, pos);
            ObjectBody.BodyType = BodyType.Static;
            ObjectBody.SetRestitution(0f);
            ObjectBody.SetFriction(0.5f);
            if (j == 0)
            {
                _currColumn = 0;
            }
            else if (level[i][j - 1] == '.')
            {
                if (j != level[i].Count - 1)
                {
                    if (level[i][j + 1] == '.')
                    {
                        _currColumn = 1;
                    }
                }
                else
                {
                    _currColumn = 0;
                }
            }
            else if (j == level[i].Count - 1)
            {
                _currColumn = 2;
            }
            else if (level[i][j + 1] == '.')
            {
                _currColumn = 2;
            }
            else
            {
                _currColumn = 1;
            }

            if (rows > 1)
            {
                _currColumn = j;
                _currRow    = i;
            }
        }
Exemplo n.º 3
0
        public Enemy(ScreenManager screenManager, Player player, string propName, Vector2 pos, World world, Vector2 objectBodySize, Vector2 objectTextureMetersSize, int columns, int rows, Level sourceLevel) : base(screenManager, propName, objectBodySize, objectTextureMetersSize, columns, rows, sourceLevel)
        {
            ObjectBody          = world.CreateCapsule(_objectBodySize.X, _objectBodySize.Y / 3f, 10, _objectBodySize.Y / 3f, 10, 1f, pos);
            ObjectBody.BodyType = BodyType.Dynamic;
            ObjectBody.SetRestitution(0f);
            ObjectBody.Mass          = 2f;
            ObjectBody.FixedRotation = true;
            ObjectBody.SetFriction(0.5f);
            ObjectBody.Tag = "Enemy";


            Health                = 100;
            _playerSeen           = false;
            _gotHit               = false;
            _canShoot             = true;
            _player               = player;
            _timeSinceLastMissile = TimeSpan.Zero;
            _orientation          = (Orientation)RandomNumberGenerator.GetInt32(2);
            if (_orientation == Orientation.Left)
            {
                _creatureEffect = SpriteEffects.FlipHorizontally | SpriteEffects.FlipVertically;
            }
            _leftCone  = createVision(Orientation.Left);
            _rightCone = createVision(Orientation.Right);
            foreach (var fixture in ObjectBody.FixtureList)
            {
                if (!"DetectionCone".Equals(fixture.Tag))
                {
                    fixture.Tag = "Enemy";
                }
            }

            _healthBarColor = Color.Green;
            makeHealthBar();

            ObjectBody.OnCollision += OnCollision;
        }