示例#1
0
        private static Vector2 SpawnPosition(PlayerObject p)
        {
            var     contains = true;
            Vector2 v        = new Vector2();
            int     margin   = 100;

            do
            {
                v.X        = RandomNumber.Between(40, 1050);
                v.Y        = RandomNumber.Between(0, 500);
                p.Position = v;
                contains   = false;
                var pRec = p.GetRectangle();

                foreach (var player in Players)
                {
                    if (p != player)
                    {
                        var other = player.GetRectangle();
                        other.Inflate(margin, margin);
                        if (other.Contains(pRec.Center))
                        {
                            contains = true;
                        }
                    }
                }
            } while (contains);

            return(v);
        }
示例#2
0
        protected override void GetInput(GameTime gameTime)
        {
            _aiStanceElapsedTime += gameTime.ElapsedGameTime.TotalMilliseconds;
            if (_aiStanceElapsedTime >= _aiStanceWaitTime)
            {
                _aiStanceElapsedTime = 0;
                _aiStanceWaitTime    = RandomNumber.Between(2000, 3000);

                var n = RandomNumber.Between(0, 100);

                if (n >= 0 && n <= 30)
                {
                    CurrentState = State.Eating;
                }
                else if (n > 30 && n <= 60)
                {
                    CurrentState = State.Idle;
                }
                else
                {
                    CreateMovement();

                    if (n > 60 && n <= 75)
                    {
                        CurrentState = State.Running;
                        _movement   *= RUNNING_SPEED;
                    }
                    else
                    {
                        CurrentState = State.Walking;
                        _movement   *= WALKING_SPEED;
                    }
                }
            }
        }
示例#3
0
        private void CreateMovement()
        {
            var n = RandomNumber.Between(0, 7);

            if (n == 0)
            {
                _movement.X             = 1;
                _movement.Y             = 1;
                Sheep.LookDirectionLeft = false;
            }
            if (n == 1)
            {
                _movement.X             = 1;
                _movement.Y             = 0;
                Sheep.LookDirectionLeft = false;
            }
            if (n == 2)
            {
                _movement.X             = 1;
                _movement.Y             = -1;
                Sheep.LookDirectionLeft = false;
            }
            if (n == 3)
            {
                _movement.X = 0;
                _movement.Y = 1;
            }
            if (n == 4)
            {
                _movement.X = 0;
                _movement.Y = -1;
            }
            if (n == 5)
            {
                _movement.X             = -1;
                _movement.Y             = 1;
                Sheep.LookDirectionLeft = true;
            }
            if (n == 6)
            {
                _movement.X             = -1;
                _movement.Y             = 0;
                Sheep.LookDirectionLeft = true;
            }
            if (n == 7)
            {
                _movement.X             = -1;
                _movement.Y             = -1;
                Sheep.LookDirectionLeft = true;
            }
        }
示例#4
0
        public void Update(GameTime gameTime)
        {
            ElapsedTime += gameTime.ElapsedGameTime.TotalMilliseconds; // adds elapsed time since the last frame

            if (ElapsedTime > AnimationManager.FRAMETIME)
            {
                CurrentFrame++;

                //wenn anzahl an maximalen frames erreicht ist, starte von 0
                if (CurrentFrame == AnimationManager.Reference.TextureListSheep[_currentAnimation].FrameCount)
                {
                    //blinking idle
                    if (_currentAnimation == AnimationManager.AnimationType.IdleBlinking)
                    {
                        _currentAnimation = AnimationManager.AnimationType.Idle;
                    }
                    else if (_currentAnimation == AnimationManager.AnimationType.Idle)
                    {
                        var n = RandomNumber.Between(0, 100);
                        if (n < 20)
                        {
                            Play(AnimationManager.AnimationType.IdleBlinking);
                        }
                    }

                    if (_currentAnimation == AnimationManager.AnimationType.Dying)
                    {
                        CurrentFrame--; //don't loop dying
                    }
                    else
                    {
                        CurrentFrame = 0;
                    }
                }

                ElapsedTime = 0;
            }
        }
示例#5
0
        protected override void GetInput(GameTime gameTime)
        {
            CurrentState = State.Idle;
            _movement    = new Vector2();

            if (_soundWaitTime <= 0)
            {
                if (InputManager.GameMakeSoundPressed(_gamePadId))
                {
                    GameController.SheepSounds[RandomNumber.Between(0, 1)].Play();
                    _soundWaitTime = 3000D;
                }
            }
            else
            {
                _soundWaitTime -= gameTime.ElapsedGameTime.TotalMilliseconds;
            }
            //Debug.WriteLine(_soundWaitTime);


            if (InputManager.GameEatPressed(_gamePadId))
            {
                CurrentState = State.Eating;
                return;
            }
            if (InputManager.GameChoosePressed(_gamePadId) && Sheep.IsBlack)
            {
                GameController.ChooseSelected();
            }

            if (InputManager.GameLeftPressed(_gamePadId) ||
                InputManager.GameUpPressed(_gamePadId) ||
                InputManager.GameRightPressed(_gamePadId) ||
                InputManager.GameDownPressed(_gamePadId)
                )
            {
                CurrentState = InputManager.GameRunPressed(_gamePadId) ? State.Running : State.Walking;
            }

            if (InputManager.GameLeftPressed(_gamePadId))
            {
                _movement.X            += -1;
                Sheep.LookDirectionLeft = true;
            }
            if (InputManager.GameRightPressed(_gamePadId))
            {
                _movement.X            += 1;
                Sheep.LookDirectionLeft = false;
            }
            if (InputManager.GameUpPressed(_gamePadId))
            {
                _movement.Y += -1;
            }
            if (InputManager.GameDownPressed(_gamePadId))
            {
                _movement.Y += 1;
            }


            if (Movement.LengthSquared() <= 0)
            {
                CurrentState = State.Idle;
            }

            switch (CurrentState)
            {
            case State.Running:
                _movement *= RUNNING_SPEED;
                break;

            case State.Walking:
                _movement *= WALKING_SPEED;
                break;
            }
        }
示例#6
0
 public void Headbanging()
 {
     CurrentState      = State.Headbanging;
     _aiStanceWaitTime = RandomNumber.Between(2000, 3000);
 }