예제 #1
0
        public void Movement(GameTime gameTime)
        {
            if (hasAggro(position, playerposition))
            {
                int[] tempNode = new int[2];
                MoveMe.mobs   = mobs;
                MoveMe.allies = allies;
                tempNode      = MoveMe.DoSearch(position);

                moveingToPosition.X = tempNode[0];
                moveingToPosition.Y = tempNode[1];
                direction           = MoveMe.chosenDirection;
                moving = true;

                fTotalElapsedTime = 0;
            }
            if (targetAlly)
            {
                if (((Math.Abs(targetedAlly.position[0] - position[0]) + (Math.Abs(targetedAlly.position[1] - position[1])))) < 2)
                {
                    aniSprite.Attacking = true;
                    aniSprite.Walking   = false;
                }
            }
            else
            {
                if (((Math.Abs(playerposition[0] - position[0]) + (Math.Abs(playerposition[1] - position[1])))) < 2)
                {
                    aniSprite.Attacking = true;
                    aniSprite.Walking   = false;
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Allows the game component to update itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        public override void Update(GameTime gameTime)
        {
            if (alive)
            {
                float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
                fTotalElapsedTime += elapsed;

                if (fTotalElapsedTime > 0.016)
                {
                    if (!moving)
                    {
                        //moveingFrom = new Vector2(position[0], position[1]);
                        int[] tempNode = new int[2];
                        CheckAggro();
                        if (!Aggro)
                        {
                            MoveMe.playerposition = playerposition;
                        }
                        else
                        {
                            MoveMe.playerposition = targetMob.position;
                        }
                        oldPosition         = position;
                        MoveMe.mobs         = mobs;
                        MoveMe.allies       = allies;
                        tempNode            = MoveMe.DoSearch(position);
                        moveingToPosition.X = tempNode[0];
                        moveingToPosition.Y = tempNode[1];
                        direction           = MoveMe.chosenDirection;
                        moving = true;

                        //position = tempNode; <- for insta move
                    }
                    fTotalElapsedTime = 0;
                }
            }
            aniSprite.Update(gameTime);
            calculateDraw();
            base.Update(gameTime);
        }