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

📄 jiaose.java

📁 HappyTreeFriends手机游戏的源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    void InitAI()
    {
        // some work to init AI like:
        /*
        changeAction(m_actionID, true);
        ......
        switch (m_ajiaoseClassID)
        {
            case TEST:
                .....
                break;
            ..........
        }
        //*/
        
        if (m_anim != null)
        {
            // Set the initial action loaded from scene.
            SetAction(m_actionID, true);
	     shenJIIIIIIIMechInfo();	
        }

				switch (m_ajiaoseClassID)
				{

/*
						case DWorld.ACTOR_CLASS_ID_ENEMY:
                

                                                 m_level = LV_FG_DYNAMIC;
						break;
//*/						
            case DWorld.ACTOR_CLASS_ID_LAUNCH:
                     m_level = LV_FG_DYNAMIC;
			switch(m_actionID)
				{
					case DWorld.ACTION_ID_LAUNCH_CUDDLES:
					   	m_x = ( Xiyou.s_jingtouX << 8 ) + LAUNCHER_SCREEN_X;
						m_y = ( Xiyou.s_jingtouY << 8 ) + LAUNCHER_SCREEN_Y; 	
					   	break;
					case DWorld.ACTION_ID_LAUNCH_BAND:
					   	m_x = ( Xiyou.s_jingtouX << 8 ) + LAUNCHER_SCREEN_X + LAUNCHER_BAND_OFFSETX;
						m_y = ( Xiyou.s_jingtouY << 8 ) + LAUNCHER_SCREEN_Y + LAUNCHER_BAND_OFFSETY; 	
					   	break;
					case DWorld.ACTION_ID_LAUNCH_TOOTHY:
					   	m_x = ( Xiyou.s_jingtouX << 8 ) + LAUNCHER_SCREEN_X + LAUNCHER_TOOTHY_OFFSETX;
						m_y = ( Xiyou.s_jingtouY << 8 ) + LAUNCHER_SCREEN_Y + LAUNCHER_TOOTHY_OFFSETY; 	
					   	break;	
				      case DWorld.ACTION_ID_LAUNCH_LAUNCH_0:
                		      case DWorld.ACTION_ID_LAUNCH_LAUNCH_1:
               		      case DWorld.ACTION_ID_LAUNCH_LAUNCH_2:
						  	s_launcher = this;
						 	m_x = ( Xiyou.s_jingtouX << 8 ) + LAUNCHER_SCREEN_X;
							m_y = ( Xiyou.s_jingtouY << 8 ) + LAUNCHER_SCREEN_Y; 								
						break;
				      case DWorld.ACTION_ID_LAUNCH_LAUNCH_FLY:
					  	       s_toothy = this;
					  	 break;
				      case DWorld.ACTION_ID_LAUNCH_INDICATOR:
					  	       s_indicator = this;
							s_indicator.m_x = SMALL_MAP_CENTER_X ;
                                                 s_indicator.m_y = SMALL_MAP_CENTER_Y ;   
					  	 break;
				}
	
                
                break;
            case DWorld.ACTOR_CLASS_ID_FLY_HURT:
                m_level = LV_FG_DYNAMIC;
                switch (m_actionID)
                {
                    case DWorld.ACTION_ID_FLYHURT_FLY_HURT_0:		
			   
						
                        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_level = LV_FG_DYNAMIC;		
                        break;
		      case DWorld.ACTION_ID_PRINCESS_06:
			  	m_level = LV_BG;
				GetJiaosesHezzzzzzInfo( BOX_TYPE_ATTACK, s_hezzzPrincess );
			  break;	
                    default:
                            m_level = LV_BG;
                        break;
                }
                break;		
            case DWorld.ACTOR_CLASS_ID_BURNT:
                m_level = LV_FG_DYNAMIC;	
		  break;		


            case DWorld.ACTOR_CLASS_ID_CROCODILEBITED:
                m_level = LV_FG_DYNAMIC;	
                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_level = LV_FG_DYNAMIC;			
                        break;
                    default:
                              m_level = LV_BG;
                        break;
                }
                break;	
       case DWorld.ACTOR_CLASS_ID_FLYHURT_PRINCESS:
	   	 m_level = LV_FG_DYNAMIC;		
                switch (m_actionID)
                {
                    case DWorld.ACTION_ID_FLYHURT_PRINCESS_SLIDEDOWN_P:
			   
                        break;
                    case DWorld.ACTION_ID_FLYHURT_PRINCESS_SLIDEDOWN:
                       
                        break;
                }
                break;	


	case DWorld.ACTOR_CLASS_ID_SPLASH:
	   	  m_level = LV_BG;		
                
                break;	
	 
	case DWorld.ACTOR_CLASS_ID_COLLIDEHEAD:
		 m_level = LV_FG_DYNAMIC;	
					
		 break;	
	case DWorld.ACTOR_CLASS_ID_ROPE:
		m_level = LV_FG_DYNAMIC;	
		break;
		  

				
        }
    }
    

/**
     * check if any static ajiaoses should be activated and perform ai of active
     * ajiaoses. Scrolling background is also done.
     */
    public static void shenJIIIIIIIPlayer()
    {
        for (int i = 0; i < s_ajiaoseCount; i++)
        {
            if (s_ajiaoseFangjianID[i] == -1 &&
                (InActiveZone(s_originData[s_ajiaosepanYi[i] + FLAG_OFFSET], i * 4) || (s_forceActiveID == s_originData[s_ajiaosepanYi[i] + ACTORCLASSID_OFFSET] ))
                )
            {
                s_forceActiveID = ID_ACTIVE_NO_ACTOR;
                FenPeijiaose(i, true);
            }
        }

        //System.out.println(s_freeFangjianID);

        //update
        for (int i = 0; i < s_freeFangjianID; i++)
        {
            Jiaose a = s_ajiaoses[i];
            a.shenJIIIIIIIAI();

            if (s_ajiaoseDie)
            {
                i--;
                s_ajiaoseDie = false;
            }
        }

    }


    /**
     * shenJIIIIIII ajiaose's AI in each frame
     */
    public void shenJIIIIIIIAI()
    {

	//if(s_gameOver)return;
        /*
        // EXAMPLE: how to check two hezzz intersecting
        
        GetJiaosesHezzzzzzInfo(BOX_TYPE_ATTACK, s_hezzz1);
        s_ajiaoses[0].GetJiaosesHezzzzzzInfo(BOX_TYPE_COLLISION, s_hezzz2);
        if (Xiyou.IsIntersecting(s_hezzz1, s_hezzz2))
        {
            System.out.println("intersect!!!!!!!");
        }
        //*/



       
        



        GetJiaosesHezzzzzzInfo(BOX_TYPE_COLLISION, s_oldColHezzzzzz);

        shenJIIIIIIIPhysics();
		
        

        switch (m_ajiaoseClassID)
        {
            /*
            // EXAMPLE: how to update ajiaose's AI
            case DWorld.ACTOR_CLASS_ID_PRINCE:
                AiPrince();
                break;

            case DWorld.ACTOR_CLASS_ID_ENEMY:
                AiGuarder();
                break;
            //*/

            case DWorld.ACTOR_CLASS_ID_COLLIDEHEAD:
			if(m_actionOver)
				{
					m_flag |= DWorld.ACTOR_FLAG_INVISIBLE;
				}
			break;	
            case DWorld.ACTOR_CLASS_ID_LAUNCH:
				switch(m_actionID)
				{
				       case DWorld.ACTION_ID_LAUNCH_CUDDLES:

						if (Xiyou.IsKeyPressed(Xiyou.GK_A) )
			                        {
			                            if(!s_startSlide)
			                            	{
			                            		s_sliding = true;	
									s_isWindWork = false;
                    					       	s_loadX = s_indicator.m_x;
                               					s_loadY = s_indicator.m_y;
									s_launcher = this;			
										
			                            	}
							else
								{
								       this.m_x+=LAUNCHER_SCREEN_OFFSETX;	
							              this.m_y+=LAUNCHER_SCREEN_OFFSETY;	
									s_fire = true;
									s_sliding = false;	
									//s_lideId = s_preLideId;
									
                                                               s_indicator.Die(true);		
									int slideId = Math.abs(s_lideId) ;
									s_power = 4 - slideId;

									SetAction(DWorld.ACTION_ID_LAUNCH_LAUNCH_3 , true);
								}
			                            
			                        }
					   	
					   	break;
					case DWorld.ACTION_ID_LAUNCH_BAND:
						this.m_x = ( Xiyou.s_jingtouX << 8 ) + LAUNCHER_SCREEN_X + LAUNCHER_BAND_OFFSETX - GetPosX(15);
					   	this.m_y = ( Xiyou.s_jingtouY << 8 ) + LAUNCHER_SCREEN_Y + LAUNCHER_BAND_OFFSETY - GetPosY(10);
						if (s_fire)
                        			{
                            			this.Die(true);

                        			}
						break;
					case DWorld.ACTION_ID_LAUNCH_TOOTHY:
					   	this.m_x = ( Xiyou.s_jingtouX << 8 ) + LAUNCHER_SCREEN_X + LAUNCHER_TOOTHY_OFFSETX - GetPosX(30);
					   	this.m_y = ( Xiyou.s_jingtouY << 8 ) + LAUNCHER_SCREEN_Y + LAUNCHER_TOOTHY_OFFSETY - GetPosY(20);
						if (s_fire)
			                        {
			                            this.Die(true);

			                        }

						break;	
				       case DWorld.ACTION_ID_LAUNCH_LAUNCH_0:
                			case DWorld.ACTION_ID_LAUNCH_LAUNCH_1:
                			case DWorld.ACTION_ID_LAUNCH_LAUNCH_2:
						if(m_actionOver)
							{
								Xiyou.PlaySound(DWorld.SOUND_ID_FLYING);
								s_isLaunched = true;
								s_lifeValue[TYPE_TOOTHY] -= (s_power >> 1) * 10;
							}
						//for press un released bug
						break;

					case DWorld.ACTION_ID_LAUNCH_LAUNCH_3:
						if(m_actionOver)
							{
								if(s_power <POWER_OK_SEE_WALL)
									{
										SetAction(DWorld.ACTION_ID_LAUNCH_LAUNCH_0 , true);
									}
								else
									{
										SetAction(DWorld.ACTION_ID_LAUNCH_LAUNCH_4 , true);
									}
							}
						break;
                			case DWorld.ACTION_ID_LAUNCH_LAUNCH_4:
						if(m_actionOver)
							{
								if(s_power >= POWER_OK_SEE_WALL && s_power < POWER_OK_TO_WALL)
									{
										SetAction(DWorld.ACTION_ID_LAUNCH_LAUNCH_1 , true);
									}
								else
									{
										SetAction(DWorld.ACTION_ID_LAUNCH_LAUNCH_5 , true);
									}
							}
						break;
                			case DWorld.ACTION_ID_LAUNCH_LAUNCH_5:	   
							if(m_actionOver)
							{
								//if(Math.abs(s_lideId) <=1 )
									{
										SetAction(DWorld.ACTION_ID_LAUNCH_LAUNCH_2 , true);
									}
								
							}		
							/*	
						  	if((Xiyou.IsKeyHold(Xiyou.GK_A) ||Xiyou.IsKeyPressed(Xiyou.GK_A)) && s_power < POWER_MAX)
                    					{
                    					       if(s_power == 0)
                    					       {
                    					              s_isWindWork = false;
                    					       	s_loadX = s_indicator.m_x;
                               					s_loadY = s_indicator.m_y;
									s_indicator.Die(true);
						  		}
											   	
				 				if((s_power++) % POWER_STATUS_CHANGE == 0)
			     					SetAction(DWorld.ACTION_ID_LAUNCH_LAUNCH_3 + (s_power) /POWER_STATUS_CHANGE , true);
                    
                    					}
		  					else if(Xiyou.IsKeyReleased(Xiyou.GK_A))
		  					{
		  					       if(s_power == 0)
                    					       {
                    					              s_isWindWork = false;
                    					       	s_loadX = s_indicator.m_x;
                               					s_loadY = s_indicator.m_y;
									s_indicator.Die(true);
						  		}
		  						SetAction(DWorld.ACTION_ID_LAUNCH_LAUNCH_0 + (s_power) /POWER_STATUS_CHANGE , true);
		  	      					s_isLaunched = true;
								s_lifeValue[TYPE_TOOTHY] -= (s_power / POWER_STATUS_CHANGE) * 10;
									
		  					}
		  					//*/
							
						break;
				          case DWorld.ACTION_ID_LAUNCH_LAUNCH_FLY:
                                      case DWorld.ACTION_ID_LAUNCH_LAUNCH_FLY2:
                                      case DWorld.ACTION_ID_LAUNCH_LAUNCH_FLY3:
                                      case DWorld.ACTION_ID_LAUNCH_LAUNCH_FLY4:
                                      case DWorld.ACTION_ID_LAUNCH_LAUNCH_FLY5: 
					  	      if (!s_isInTheAir && s_isLaunched && s_launcher.m_actionOver)
                        				{
                            
                           					 m_flag &= ~DWorld.ACTOR_FLAG_INVISIBLE;
                           					 SetAction(DWorld.ACTION_ID_LAUNCH_LAUNCH_FLY, true);
                            				 m_x = s_loadX;
                            				 m_y = s_loadY;
                            				 s_isInTheAir = true;
                           					 s_launcher.Die(true);	
								 Xiyou.SheJintou(this , true , true);			 
                        				}


							if (s_isInTheAir && !s_isClosed)
                       				 {

                           					 if (s_ctrCloseTick >= ZHEN_IN_THE_AIR - 1)
                            				{
                            				       if(IsOutOfCastleLRT(this))
                                                               {
                                                               	Xiyou.Librate(true , 1000);
										SetAction(DWorld.ACTION_ID_LAUNCH_FLY_AWAY , true);
										this.m_x = Xiyou.s_jingtouX + PINGMUDDD.sssCHUANNN_WIDTH + 40 << 8;	
										this.m_y = Xiyou.s_jingtouY + (PINGMUDDD.sssCHUANNN_HEIGHT - 40 >> 1) << 8;			
										break;
                                                               }
									else if(IsOutOfCastleB(this))
										{
										       Xiyou.Librate(true , 1000);
										       SetAction(DWorld.ACTION_ID_LAUNCH_DIE , true);
											
										}
									else
										{
											s_isClosed = true;
											s_inGround = false;
											if(s_power >= POWER_OK_SEE_WALL && s_power < POWER_OK_TO_WALL)
												{
													s_desX = GetCamOffetX(s_level /MAP_UP_BY_LEVEL , this.m_x);
	                                                                                    s_desY = GetCamOffetY(s_level /MAP_UP_BY_LEVEL , this.m_y);
	      										              s_isActiveGameScene=true;	
													s_side = Xiyou.Rand(RIVER_UP ,RIVER_DOWN);	

												}
											else if(s_power >= POWER_OK_TO_WALL)
											{
												  MakeBlood();
												   s_desX = GetCamOffetX(s_level /MAP_UP_BY_LEVEL , this.m_x);
	                                                                                s_desY = GetCamOffetY(s_level /MAP_UP_BY_LEVEL , this.m_y);
	      										          s_isActiveGameScene=true;	
	  
											}
										}
                                					
				                      	    
 
                           				 	}
                            				else
                            				{
                            				      // can't reach the wall
                            				      if(s_power <  POWER_OK_SEE_WALL )
                            				      	{
                            				      		if(s_ctrCloseTick < (s_p

⌨️ 快捷键说明

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