⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiaose.java

📁 HappyTreeFriends手机游戏的源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        }
    }
    
    public static final int BOX_TYPE_COLLISION = 0;
    public static final int BOX_TYPE_ATTACK = 1;
    public int[] GetJiaosesHezzzzzzInfo ( int hezzzType, int[] destHezzzzzzData )
    {
        if(hezzzType == BOX_TYPE_COLLISION)
        {
            System.arraycopy( m_collisionHezzzzzz, 0, destHezzzzzzData, 0, 4 );
        }
        else if (hezzzType == BOX_TYPE_ATTACK)
        {
            System.arraycopy( m_attackHezzzzzz, 0, destHezzzzzzData, 0, 4 );
        }

       Xiyou.ShiftHezzzzzz( destHezzzzzzData, m_x >> 8, m_y >> 8);

       return destHezzzzzzData;
    }
  
    void SetCircular()
    {
        
        
        m_actionCircular = true;
        switch (m_ajiaoseClassID)
        {
            case DWorld.ACTOR_CLASS_ID_LAUNCH:

                switch (m_actionID)
	            {
	                case DWorld.ACTION_ID_LAUNCH_LAUNCH_0:
	                case DWorld.ACTION_ID_LAUNCH_LAUNCH_1:
	                case DWorld.ACTION_ID_LAUNCH_LAUNCH_2:
			  case DWorld.ACTION_ID_LAUNCH_DOWN:	
			  case DWorld.ACTION_ID_LAUNCH_DIE:		
	                    m_actionCircular = false;
	                    break;
			  default:
	                    m_actionCircular = true;
	                    break;			

	            }
             break;
            case DWorld.ACTOR_CLASS_ID_BURNT:
 				
            case DWorld.ACTOR_CLASS_ID_CROCODILEBITED:

                
                  m_actionCircular = false;
                break;
	     case DWorld.ACTOR_CLASS_ID_DRAGONBITE:
		 	switch (m_actionID)
	            {
	            		case DWorld.ACTION_ID_DRAGON_DRAGONBITE_0:
				case DWorld.ACTION_ID_DRAGON_DRAGONBITE_1:

					m_actionCircular = false;
					break;
				default:
					m_actionCircular = true;
					break;
							
		 	}
		 	break;
            case DWorld.ACTOR_CLASS_ID_PRINCESS:
			switch (m_actionID)
	            {
	                case DWorld.ACTION_ID_PRINCESS_PUNCTURE_0:
	                case DWorld.ACTION_ID_PRINCESS_PUNCTURE_1:						
	                    m_actionCircular = false;
	                    break;
			  default:
	                    m_actionCircular = true;
	                    break;			

	            }	
			break;
            case DWorld.ACTOR_CLASS_ID_TRAILER:
			switch (m_actionID)
	            {
	                case DWorld.ACTION_ID_TRAILER_HORSE:
				if(Xiyou.s_ctrGameStatus >=  3 * PRELUDE_SCENE_ZHEN) 		
	                             m_actionCircular = false;
				else
					m_actionCircular = true;
	                    break;
			  case DWorld.ACTION_ID_TRAILER_CUDDLES_KNOW:		
 				  	m_actionCircular = false;
			  	break;
			  default:
	                    m_actionCircular = true;
	                    break;			

	            }	
			break;
				
            default:
                m_actionCircular = true;
                break;
        }
        
    }

    static boolean s_isGravityWork = false;
    static final int GRAVITY_A = -1 << 7;

    static final int GRAVITY_STEP = -8;	

    public static final int WINPOWER_MAX = 3 ;
    public static final int WINPOWER_STEP = 2 << 8 ;
	
    static boolean s_isWindWork = true;
    static int s_windPower = 0;

    public static final int WIND_TICK_ZHEN = 80;	

    //for wind power

	public static void RandomWindPower()
    	{



    	     if(s_isWindWork)
    	     		s_windPower = Xiyou.Rand(0 , WINPOWER_MAX << 1)  - WINPOWER_MAX;
	     if(Xiyou.s_cheatModeEnabled)
	     	{
	     		s_windPower = 0;
	     	}			 
    	}


    void shenJIIIIIIIPhysics()
    {

	  s_isGravityWork = false;

	 if((//m_ajiaoseClassID == DWorld.ACTOR_CLASS_ID_LAUNCH && m_actionID == DWorld.ACTION_ID_LAUNCH_DOWN ||
	 	m_ajiaoseClassID == DWorld.ACTOR_CLASS_ID_FLY_HURT && 
	 	(m_actionID != DWorld.ACTION_ID_FLYHURT_BLOOD &&
	 	m_actionID != DWorld.ACTION_ID_FLYHURT_FLY_HURT_12 &&
	 	m_actionID != DWorld.ACTION_ID_FLYHURT_FLY_HURT_15 &&
	 	m_actionID != DWorld.ACTION_ID_FLYHURT_FIRE) && 
	 	((Xiyou.s_ctrGameStatus >= HIT_STAY_DURATION && m_actionID != DWorld.ACTION_ID_FLYHURT_FLY_HURT_14) || s_collideJiaoses ||
		 (m_actionID == DWorld.ACTION_ID_FLYHURT_FLY_HURT_14 &&
		 s_power >= POWER_OK_SEE_WALL && s_power < POWER_OK_TO_WALL)	
	 	))&& !s_inGround)
            s_isGravityWork = true; 
           

      	 if(m_ajiaoseClassID == DWorld.ACTOR_CLASS_ID_FLYHURT_PRINCESS && ( 
	 	m_actionID == DWorld.ACTION_ID_FLYHURT_PRINCESS_FLYHURT_P_0 || 
	 	m_actionID == DWorld.ACTION_ID_FLYHURT_PRINCESS_FLYHURT_P_1 || 
	 	m_actionID == DWorld.ACTION_ID_FLYHURT_PRINCESS_FLYHURT_P_2 )&& !s_inGroundP)	 
	        s_isGravityWork = true;
        
	if (s_isGravityWork)
	{
		m_aY =  -GRAVITY_A;
	}
	else
	{
		m_aY = 0;
	}


        m_vX += m_aX;
        m_vY += m_aY;

        m_x += m_vX;
	m_y += m_vY;
    }

    public static final byte PHY_NONE  = -1;
    public static final byte PHY_AIR = 0;
    public static final byte PHY_V_WALLING = 1;
    public static final byte PHY_H_WALLING = 2;
    public static final byte PHY_SOLID = 6;
    public static final byte PHY_WALL_EDGE = 7;
    public static final byte PHY_DEAD = 8;
    public static final byte PHY_OUT = 9;


    public static byte[] s_phyHuanchong;
    public static int s_bufferWidth; // by tiles
    public static int s_bufferHeight;
    
    public static final int MASK_INTEGER  = 0xffffff00;

    public void CollisionEnv()
    {

        GetJiaosesHezzzzzzInfo( BOX_TYPE_COLLISION, s_hezzz1 );
        CheckCollisionWithEnv(s_hezzz1);
        if ( s_tIaoZHenX != 0 )
        {
            m_x += s_tIaoZHenX;
            m_x &= MASK_INTEGER;
        }
        if ( s_tIaoZHenY != 0 )
        {
            m_y += s_tIaoZHenY;
            m_y &= MASK_INTEGER;
        }
        GetJiaosesHezzzzzzInfo( BOX_TYPE_COLLISION, s_hezzz1);
        GetSurroundingEnvInfo( s_hezzz1, m_flipX ? -1 : 1);
    }


    static int[] s_oldColHezzzzzz = new int[4];

    static int s_tIaoZHenX;
    static int s_tIaoZHenY;

    public void CheckCollisionWithEnv(int[] newColHezzzzzz)
    {
        if ( newColHezzzzzz == null ) return;

        s_tIaoZHenX = 0;
        s_tIaoZHenY = 0;

      
        if ( newColHezzzzzz [ INDEX_BOX_LEFT ] < 1 )
        {
            s_tIaoZHenX += 1 - newColHezzzzzz [ INDEX_BOX_LEFT ];
            newColHezzzzzz [ INDEX_BOX_LEFT  ] = 0;
            newColHezzzzzz [ INDEX_BOX_RIGHT ] += s_tIaoZHenX;
        }
        else if ( newColHezzzzzz [ INDEX_BOX_RIGHT ] >= (Xiyou.s_diTUWidth  << Xiyou.s_tileBits) - 1 )
        {
            s_tIaoZHenX += ( (Xiyou.s_diTUWidth  << Xiyou.s_tileBits) - 2 ) - newColHezzzzzz [ INDEX_BOX_RIGHT ];
            newColHezzzzzz [ INDEX_BOX_RIGHT ] = ( short ) ( (Xiyou.s_diTUWidth  << Xiyou.s_tileBits) - 2 );
            newColHezzzzzz [ INDEX_BOX_LEFT  ] += s_tIaoZHenX;
        }

        boolean check_top    = true;
        boolean check_bottom = true;

        int old_col_left   = s_oldColHezzzzzz [ INDEX_BOX_LEFT   ] / Xiyou.TILE_WIDTH;
        int old_col_right  = s_oldColHezzzzzz [ INDEX_BOX_RIGHT  ] / Xiyou.TILE_WIDTH;
        int old_row_top    = s_oldColHezzzzzz [ INDEX_BOX_TOP    ] / Xiyou.TILE_HEIGHT;
        int old_row_bottom = s_oldColHezzzzzz [ INDEX_BOX_BOTTOM ] / Xiyou.TILE_HEIGHT;

        if ( old_row_top < 0 )
        {
            check_top = false;
            old_row_top = 0;
        }

        if ( old_row_bottom >= s_bufferHeight )
        {
            check_bottom = false;
            old_row_bottom = s_bufferHeight - 1;
        }

        int new_col_left   = newColHezzzzzz [ INDEX_BOX_LEFT   ] / Xiyou.TILE_WIDTH;
        int new_col_right  = newColHezzzzzz [ INDEX_BOX_RIGHT  ] / Xiyou.TILE_WIDTH;
        int new_row_top    = newColHezzzzzz [ INDEX_BOX_TOP    ] / Xiyou.TILE_HEIGHT;
        int new_row_bottom = newColHezzzzzz [ INDEX_BOX_BOTTOM ] / Xiyou.TILE_HEIGHT;

        if ( new_row_top < 0 ) new_row_top = 0;
        if ( new_row_bottom >= s_bufferHeight ) new_row_bottom = s_bufferHeight - 1;


       
        if ( m_vX < 0 )
        {
            s_indexStep1 = -1;
            s_indexStep2 = s_bufferWidth;
            s_linesCount = old_col_right - new_col_left;
            s_tilesCount = old_row_bottom - old_row_top + 1;
            s_startTileIndex = old_row_top * s_bufferWidth + old_col_right;

            int lines = GetUnblockedLines();
            if ( lines < s_linesCount )
            {
                int block_x = ( old_col_right - lines ) * Xiyou.TILE_WIDTH;
                s_tIaoZHenX += block_x - newColHezzzzzz [ INDEX_BOX_LEFT ];

                new_col_right += ( s_linesCount - lines );
                new_col_left  = old_col_right - lines;
            }
        }

       
        if ( m_vX > 0)
        {
            s_indexStep1 = 1;
            s_indexStep2 = s_bufferWidth;
            s_linesCount = new_col_right - old_col_left;
            s_tilesCount = old_row_bottom - old_row_top + 1;
            s_startTileIndex = old_row_top * s_bufferWidth + old_col_left;

            int lines = GetUnblockedLines();
            if ( lines < s_linesCount )
            {
                int block_x = ( old_col_left + lines ) * Xiyou.TILE_WIDTH + Xiyou.TILE_WIDTH- 1;
                s_tIaoZHenX += block_x - newColHezzzzzz [ INDEX_BOX_RIGHT ];

                new_col_left  -= ( s_linesCount - lines );
                new_col_right = old_col_left + lines;
            }
        }

      
        if ( m_vY < 0 && check_top )
        {
            s_indexStep1 = -s_bufferWidth;
            s_indexStep2 = 1;
            s_linesCount = old_row_bottom - new_row_top;
            s_tilesCount = new_col_right - new_col_left + 1;
            s_startTileIndex = old_row_bottom * s_bufferWidth + new_col_left;

            int lines = GetUnblockedLines();
            if ( lines < s_linesCount )
            {
                int block_y = ( old_row_bottom - lines ) * Xiyou.TILE_HEIGHT;
                s_tIaoZHenY += block_y - newColHezzzzzz [ INDEX_BOX_TOP ];
            }
        }


  
        if ( m_vY > 0 && check_bottom )
        {
            s_indexStep1 = s_bufferWidth;
            s_indexStep2 = 1;
            s_linesCount = new_row_bottom - old_row_top;
            s_tilesCount = new_col_right - new_col_left + 1;
            s_startTileIndex = old_row_top * s_bufferWidth + new_col_left;

            int lines = GetUnblockedLines();
            if ( lines < s_linesCount )
            {
                int block_y = ( old_row_top + lines ) * Xiyou.TILE_HEIGHT + Xiyou.TILE_HEIGHT - 1;
                s_tIaoZHenY += block_y - newColHezzzzzz [ INDEX_BOX_BOTTOM ];
            }
        }

        s_tIaoZHenX <<= 8;
        s_tIaoZHenY <<= 8;
    }

   
    boolean m_bInDeadZone;

    boolean m_bBlockedFront;
    boolean m_bBlockedBack;
    boolean m_bBlockedTop;
    boolean m_bBlockedBottom;
    boolean m_bBlockedBottomCenter;
    boolean m_bBlockedBottomFront;
    boolean m_bBlockedBottomBack;

    boolean m_bReboundable;

    boolean m_bCanClimbUp;
    int     m_climbupPointX;
    int     m_climbupPointY;

    boolean m_bCanClimbDown;
    int     m_climbdownPointX;
    int     m_climbdownPointY;
    int     m_climbdownFaceDir;

    boolean m_bVWallingable;
    int     m_vWallingLineX;

    boolean m_bHWallingable;
    
    void GetSurroundingEnvInfo( int[] hezzz, int faceDir)
    {
    	
        m_bInDeadZone = false;

        m_bBlockedFront = false;
        m_bBlockedBack = false;
        m_bBlockedTop = false;
        m_bBlockedBottom = false;
        m_bBlockedBottomCenter = false;
        m_bBlockedBottomFront = false;
        m_bBlockedBottomBack = false;

        m_bReboundable = false;

        m_bCanClimbDown = false;
        m_bCanClimbUp = false;

        m_bVWallingable = false;
        m_bHWallingable = false;



     

        if ( hezzz [ INDEX_BOX_BOTTOM ] >= (Xiyou.s_diTUHeight * Xiyou.TILE_HEIGHT) - 1 || hezzz [ INDEX_BOX_BOTTOM ] < 1 )
        {
            m_bInDeadZone = true;
            return;
        }

        if ( hezzz [ INDEX_BOX_TOP ] < 1 ) hezzz [ INDEX_BOX_TOP ] = 1;



        int col_left   = ( hezzz [ INDEX_BOX_LEFT   ] ) / Xiyou.TILE_WIDTH;
        int col_right  = ( hezzz [ INDEX_BOX_RIGHT  ] ) / Xiyou.TILE_WIDTH;
        int row_top    = ( hezzz [ INDEX_BOX_TOP    ] ) / Xiyou.TILE_WIDTH;
        int row_bottom = ( hezzz [ INDEX_BOX_BOTTOM ] ) / Xiyou.TILE_WIDTH;
        int col_center = ( hezzz [ INDEX_BOX_LEFT   ] + hezzz [ INDEX_BOX_RIGHT  ] ) / ( Xiyou.TILE_WIDTH << 1 );

        int outer_col_left   = ( hezzz [ INDEX_BOX_LEFT   ] - 1 ) / Xiyou.TILE_WIDTH;
        int outer_col_right  = ( hezzz [ INDEX_BOX_RIGHT  ] + 1 ) / Xiyou.TILE_WIDTH;
        int outer_row_top    = ( hezzz [ INDEX_BOX_TOP    ] - 1 ) / Xiyou.TILE_WIDTH;
        int outer_row_bottom = ( hezzz [ INDEX_BOX_BOTTOM ] + 1 ) / Xiyou.TILE_WIDTH;

        int col_front, col_back;
        int outer_col_front, outer_col_back;
        int patch_x;
        if (faceDir > 0)
        {
            col_front = col_right;
            col_back = col_left;

            outer_col_front = outer_col_right;
            outer_col_back = outer_col_left;

            patch_x = Xiyou.TILE_WIDTH - 1;
        }
        else
        {
            col_front = col_left;
            col_back = col_right;

            outer_col_front = outer_col_left;
            outer_col_back = outer_col_right;

            patch_x = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -