📄 jiaose.java
字号:
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 + -