Exemplo n.º 1
0
        public override object Update()
        {
            health--;
            if (health == 0)
            {
                return(true);
            }
            if (vel[0] != 0)
            {
                //Entity.Game.DebugBreakPoint();

                float[] raw = { ((chunkX * 8) + X), ((chunkY * 8) + Y) };
                float[] dir = new float[2];
                dir[1] = 0;
                if (vel[0] > 0)
                {
                    vel[1] /= (1.25F);
                    dir[0]  = Math.Max(-0.01F + vel[0], 0);
                    vel[0]  = dir[0];
                }
                else if (vel[0] < 0)
                {
                    vel[1] /= (1.25F);
                    dir[0]  = Math.Min(0.01F + vel[0], 0);
                    vel[0]  = dir[0];
                }

                if (LCM.IsBlocking(raw))
                {
                    Entity.Game.DebugBreakPoint();

                    vel[0] = 0;
                }
                else
                {
                    LCM.MoveDir(this, dir);
                }
            }
            if (vel[1] != 0)
            {
                //Entity.Game.DebugBreakPoint();

                float[] raw = { ((chunkX * 8) + X), ((chunkY * 8) + Y) };
                float[] dir = new float[2];
                dir[0] = 0;
                if (vel[1] > 0)
                {
                    vel[1] /= (1.25F);
                    dir[1]  = Math.Max(-0.1F + vel[1], 0);
                    vel[1]  = dir[1];
                }
                else if (vel[1] < 0)
                {
                    vel[1] /= (1.25F);
                    dir[1]  = Math.Min(0.1F + vel[1], 0);
                    vel[1]  = dir[1];
                }

                if (LCM.IsBlocking(raw))
                {
                    Entity.Game.DebugBreakPoint();

                    vel[1] = 0;
                }
                else
                {
                    LCM.MoveDir(this, dir);
                }
            }
            if (bounce > 0)
            {
                Z += vel[2];
                if (Z < 0)
                {
                    Z = 0;
                    bounce--;
                    vel[2] = (bounce * 0.1F) + 0.03F;
                }
                if (vel[2] > -0.5F)
                {
                    vel[2] -= 0.08F;
                }
            }

            return(null);
        }